Apache .htaccess似乎忽略了重写条件
这是我的访问权限: 选项+FollowSymlinksApache .htaccess似乎忽略了重写条件,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,这是我的访问权限: 选项+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
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
我们应该做的很简单:
- 从URL中删除尾部斜杠
- 将example.com/tomato直接发送到example.com/pages/tomato.php
- 将example.com/tomato?c=red&size=big直接发送到example.com/pages/tomato.php?c=red&size=big
- 将example.com/tomato/red直接发送到example.com/pages/tomato.php?q=r
这可能与我在虚拟主机上运行的事实有关吗?如果是这样的话,应该采取什么措施来修复它?RewriteCond只适用于下一个RewriteRule,因此您必须为每个规则复制该条件。您可以在其他规则之前使用中断规则:
RewriteRule ^pages/ - [L]
谢谢,有没有一种方法可以使它适用于以下所有规则,而不必一次又一次地复制它?谢谢。事实证明,在这种情况下,只将RewriteCond添加到另一个RewriteRule中就足够了,但我肯定会在将来记住这一点。