2

我的.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]

然后全部以 a 结束,/?以检查可选的尾部斜杠。这行得通——这意味着我可以使用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他们都提出了同一个站点,但由于某种原因,如果我去掉尾部斜杠,URL 会发生变化并且看起来很讨厌。

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

如果有帮助,该站点位于 SourceForge.net 上。

4

2 回答 2

9

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

DirectorySlash Off

可能会有所帮助。

于 2009-02-15T09:36:50.367 回答
0

也许MultiViews是导致这种行为。尝试禁用此选项:

Options -MultiViews

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

于 2009-02-15T09:34:43.163 回答