开发者

Unwanted .html extension after mod_rewrite rule

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^readnews/([0-9]+)\.html$ readnews.php?news_art_id=$1

This works but messes up my images.

The images folder is in a directory before the url http://localhost/newsdev/images but after re-write I get http://localhost/newsdev/readnews/123.html.

Please how can I also rewrite to remove the .html?

I would like to have http://localhost/newsd开发者_StackOverflow中文版ev/readnews/123.


This will not rewrite if the request is a file or a directory on the disk

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

To remove the html at the end you could use

RewriteRule ^readnews/([0-9]+)$ readnews.php?news_art_id=$1


The expression you've posted should not be matching pictures. It's possible that you've misread the symptoms.

My educated guess is that you are liking images with a relative path. Since you are relocating the HTML document, you need to fix the paths accordingly.

  • images/foo.jpg from /newsdev/readnews.php is /newsdev/images/foo.jpg [X]
  • images/foo.jpg from /readnews/314.html is /readnews/images/foo.jpg [OK]

Or you can simply use absolute paths:

  • /newsdev/images/foo.jpg is always /newsdev/images/foo.jpg

As about removing the .html suffix, it doesn't exist until you put it there yourself. Just don't add it:

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^readnews/([0-9]+)$ readnews.php?news_art_id=$1
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜