这是我拥有的htaccess: 选项+ FollowSymlinks
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/pages
RewriteRule ^(.+)/$ /$1 [NC]
RewriteRule ^$ /pages/index.php [NC]
RewriteRule ^([a-z]+)\?([^/]+)$ /pages/$1.php?$2 [NC]
RewriteRule ^([a-z]+)/([^/]+)$ /pages/$1.php?q=$2 [NC]
RewriteRule ^([a-z]+)$ /pages/$1.php [NC]
ErrorDocument 404 /pages/404.php
应该做的很简单:
但这就是问题:for /pages/tomato.php的任何网址都与.htaccess的第7行匹配,这会产生无限循环。这就是为什么我为/ pages添加了一个例外但似乎被忽略的原因 - 我仍然在这个日志消息中得到500内部服务器错误:
mod_rewrite:达到的最大内部重定向数。假设配置错误。如有必要,请使用“RewriteOptions MaxRedirects”增加限制。
这是否与我使用虚拟主机运行此事实有关?如果是这样,应该采取什么措施来解决它?
答案 0 :(得分:4)
RewriteCond仅适用于下一个RewriteRule,因此您必须为每个规则复制该条件。
答案 1 :(得分:0)
您可以在其他规则前使用中断规则:
RewriteRule ^pages/ - [L]