mod_rewrite规则后不需要的.html扩展名

时间:2011-01-04 08:34:09

标签: apache mod-rewrite

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

这可行,但会弄乱我的图像。

images文件夹位于网址http://localhost/newsdev/images之前的目录中,但重写后我得到http://localhost/newsdev/readnews/123.html

请问如何重写以删除.html

我想http://localhost/newsdev/readnews/123

2 个答案:

答案 0 :(得分:1)

如果请求是磁盘上的文件或目录,则不会重写

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

要删除最后的html,您可以使用

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

答案 1 :(得分:0)

您发布的表达式不应与图片匹配。你可能误解了这些症状。

我有根据的猜测是,你喜欢用相对路径的图像。由于要重新定位HTML文档,因此需要相应地修复路径。

    来自images/foo.jpg
  • /newsdev/readnews.php/newsdev/images/foo.jpg [X]
  • 来自images/foo.jpg
  • /readnews/314.html/readnews/images/foo.jpg [确定]

或者你可以简单地使用绝对路径:

  • /newsdev/images/foo.jpg始终为/newsdev/images/foo.jpg

关于删除.html后缀,直到你自己把它放在那里才会存在。只是不要添加它:

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