另一个mod_rewrite尾随斜线问题

时间:2009-02-15 09:23:36

标签: apache mod-rewrite sourceforge

我的.htaccess文件中有以下重写规则:

RewriteEngine on
RewriteRule ^news/([0-9]+)/?$ /?action=news&start=$1 [L]
RewriteRule ^man/([a-zA-Z0-9_]+)/?$ /?action=man&page=$1 [L]
RewriteRule ^([a-zA-Z0-9_]+)/?$ /?action=$1 [L]

所有这些都以/?结束,以检查可选的尾部斜杠。这有效 - 这意味着我可以使用http://www.site.com/news/http://www.site.com/news来访问news页面,这就是我想要的。问题在于,虽然http://www.site.com/news/工作正常并且无提示重定向以及所有有趣的内容,http://www.site.com/news由于某种原因可见地重定向到http://www.site.com/news/?action=news。他们都提出了相同的网站,但出于某种原因,如果我不使用尾随斜线,网址会发生变化,看起来很讨厌。

有什么想法吗?我的.hyaccess文件中没有其他规则。我还要指出http://www.site.com/news/0http://www.site.com/news/0/不会遇到同样的问题。它们都无形地重定向到http://www.site.com/?action=news&start=0,这就是我想要的。这似乎只是第三条规则的问题。

如果它有帮助,该网站就在SourceForge.net上。

2 个答案:

答案 0 :(得分:9)

一个疯狂的猜测:有一个名为“news”的目录,并且自动Apache目录“添加一个尾部斜杠”重定向正在以一种奇怪的方式与你的RewriteRule进行交互。如果是这样的话,

DirectorySlash Off

可能会有所帮助。

答案 1 :(得分:0)

可能MultiViews导致此行为。尝试禁用此选项:

Options -MultiViews

另一个猜测:删除替换中的前导斜杠。