1

我在 htaccess 中遇到了 mod_rewrite 的一些问题。

例如,假设我请求 example.com/foo/,如果我在根目录中没有以“foo.*”开头的文件,它会完美运行。

假设我在 root 中有 news.php、sitemape.xml、style.css,我不能使用 /news/ 或 /sitemap/ 或 /style/ ,它会像 /news.php/ 一样给出 404。

这是我的重写字符串。它在我的 Apache 2.2.22 本地工作,但不能在我的网络主机上使用相同的 Apache 版本。

RewriteRule ^([A-Za-z0-9]+)/?$ index.php?category=$1 [NC,L]

有人有线索吗?

4

1 回答 1

4

这听起来像是Multiviews在不需要的时候抬起了丑陋的脑袋。可能是您的主机默认自动打开该Multiviews选项,然后 mod_negotiation 尝试“猜测”请求的目的,如果它足够接近(如/news/and /news.php),它将自动提供它,并忽略任何 mod_rewrite 规则你可能有。

尝试关闭多视图。您可以使用Options指令在您的 htaccess 文件中执行此操作(假设您的主机已允许选项):

Options -Multiviews
于 2013-06-29T19:35:07.377 回答