htaccess无限循环数

时间:2014-02-16 03:44:40

标签: php apache .htaccess mod-rewrite redirect

谢谢你的帮助! :)

我有下一个网址:www.domain.com/folder/123-321-something.html

重定向应该是www.domain.com/folder/321-something-123.html

我有下一个htaccess

RewriteCond %{HTTP_HOST} ^www.domain.com$
RewriteRule ^([a-zA-Z0-9-]*/)([0-9]+)-([a-zA-Z0-9-]*)\.html$ http://www.domain.com/$1$3-$2.html? [R=301,L]

此网址的结果为

重定向应该是www.domain.com/folder/something-123-321.html

我不知道如何只执行一次规则以避免循环。

此外,我还有一个带有www.domain.com/folder/123-321.html的网址,导致无限循环。

我读到了

RewriteCond  %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

我试过

RewriteCond %{HTTP_HOST} ^www.domain.com$
RewriteCond  %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9-]*/)([0-9]+)-([a-zA-Z0-9-]*)\.html$ http://www.domain.com/$1$3-$2.html? [R=301,L]

但是不要工作。

我希望能解决这个问题。

谢谢!

3 个答案:

答案 0 :(得分:1)

最后,我的结果是{REQUEST_URI}指令。

当网址的具体数字为" - "加上网址末尾的id_product_numbers,重写条件会跳过并且不会陷入无限循环

RewriteCond %{HTTP_HOST} ^www.domain.com$
RewriteCond %{REQUEST_URI} !^/([a-zA-Z0-9-]*/)(1|3|5|7|24|212|4711|1881)-([0-9]+)\.html
RewriteRule ^([a-zA-Z0-9-]*/)([0-9]+)-([a-zA-Z0-9-]*)\.html$ http://www.domain.com/$1$3-$2.html? [R=301,L]

答案 1 :(得分:0)

试试这个。我在测试运行时工作正常。我将域添加到左侧,它似乎在它循环之前停止,因为你已经有了R标志。

RewriteRule ^www.domain.com/([a-zA-Z0-9-]*/)([0-9]+)-([a-zA-Z0-9-]*)\.html$ www.domain.com/$1$3-$2.html [R=301,L]

答案 2 :(得分:0)

通过避免循环,此规则将对您有用:

RewriteRule ^([a-z0-9-]+)/([0-9]+)-([a-zA-Z0-9-]*-[a-z]+)\.html$ /$1/$3-$2.html? [R=301,L,NC]