2个重写不相互阻塞

时间:2013-10-28 15:16:37

标签: .htaccess mod-rewrite

我正在努力使工作2重写,但是当另一个处于活动状态时,其中一个没有按预期工作。

RewriteCond %{HTTP:Accept-Language} ^es [NC]
RewriteRule ^/?$ /$1?language=spanish [R=302]
RewriteRule ^(.*)$ /$1?language=spanish [R=302]

无论如何,第二个总是在工作。第一个不起作用,除非第二个不活跃。 我如何将这些工作结合在一起?

谢谢。

2 个答案:

答案 0 :(得分:0)

使用L标志并在第二条规则中添加条件以避免进一步执行:

RewriteCond %{HTTP:Accept-Language} ^es [NC]
RewriteRule ^/?$ /$1?language=spanish [R=302,L,QSA]

RewriteCond %{QUERY_STRING} !^language=.+ [NC]
RewriteRule ^(.*)$ /$1?language=something-else [R=302,L,QSA]

L标志结束当前重写循环并注入规则以供进一步处理。

答案 1 :(得分:0)

您根本不需要第一条规则,您的条件只适用于第一条规则,而不是第二条规则。

RewriteCond %{HTTP:Accept-Language} ^es [NC]
RewriteRule ^(.*)$ /$1?language=spanish [R=302,L]