1

我正在尝试制作 2 个重写器,但是当另一个处于活动状态时,其中一个无法按预期工作。

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

无论如何,第二个总是工作。除非第二个不活动,否则第一个不起作用。我如何使这些一起工作?

谢谢你。

4

2 回答 2

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 标志结束当前的重写循环并注入规则以供进一步处理。

于 2013-10-28T15:18:28.763 回答
0

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

RewriteCond %{HTTP:Accept-Language} ^es [NC]
RewriteRule ^(.*)$ /$1?language=spanish [R=302,L]
于 2013-10-28T15:19:51.703 回答