如何在有两个RewriteRules时修复重定向

时间:2014-10-24 17:01:48

标签: php apache .htaccess mod-rewrite

我的htacces文件中有两条规则:

   #rewrite pagnition
   RewriteRule ^([a-zA-Z0-9_!-]+)/([a-zA-Z0-9_!-]+)$ index.php?sideID=$1&currentpage=$2

输出网址:http://example.com/blog/2

   #rewrite services
   RewriteRule ^([a-zA-Z0-9_!-]+)/([a-zA-Z0-9_!-]+)$ index.php?sideID=$1&p=services/oneservice/$2

输出网址:http://example.com/services/oneservice

第一个像魅力一样工作,但是当访问第二个时,我会多次重新加载页面出现问题,直到服务器崩溃。

如果我禁用了第一个,那么就像它应该的那样工作,如果任何人有这个好的解决方案,那么它会被淹没。

1 个答案:

答案 0 :(得分:1)

这种情况正在发生,因为您的两个正则表达式都匹配相同的URL。像这样调整你的规则:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

# output url: http://example.com/blog/2
RewriteRule ^([\w!-]+)/([0-9]+)/?$ index.php?sideID=$1&currentpage=$2 [L,QSA]

# rewrite services
RewriteRule ^([\w!-]+)/([\w!-]+)$ index.php?sideID=$1&p=services/oneservice/$2 [L,QSA]