谢谢你的帮助! :)
我有下一个网址: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]
但是不要工作。
我希望能解决这个问题。
谢谢!
答案 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]