我徒劳地想弄清楚为什么我的重定向工作不顺利。这是我的htaccess文件的示例:
## activate rewriting engine
RewriteEngine on
## folders of languages
RewriteRule ^([a-z]{2})/(.*)$ /$2?tld=$1 [QSA,L]
## redirections
RewriteRule ^store/category1/category2/$ /store/category2/ [R=301,L]
如您所见,该网站是多语言的(site.com/fr/,site.com/uk/,...)
当我输入网址http://fr /store/category1/category2/时,它会将我重定向到site.com/store/category2/?tld=fr
你知道为什么吗?
非常感谢你的帮助
答案 0 :(得分:0)
更改规则的顺序,以便在重写规则之前保留R
规则:
## activate rewriting engine
RewriteEngine on
## redirections
RewriteRule ^store/category1/category2/$ /store/category2/ [R=301,L]
## folders of languages
RewriteRule ^([a-z]{2})/(.*)$ /$2?tld=$1 [QSA,L]
答案 1 :(得分:0)
重定向您的原因是RewriteRule
:
RewriteRule ^([a-z]{2})/(.*)$ /$2?tld=$1 [QSA,L]
它说的是第一个捕获组(第一组括号)中的任何内容,将新URL添加为$ 1,将第二个捕获组(第二组括号)放在URL的开头,前面是{ {1}}
您在该规则上使用了/
标志,因此它是Apache检查的规则集中的最后一条规则:
http://httpd.apache.org/docs/current/rewrite/flags.html#flag_l