Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess 2.不相互阻塞的规则_.htaccess_Mod Rewrite - Fatal编程技术网

.htaccess 2.不相互阻塞的规则

.htaccess 2.不相互阻塞的规则,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我试图让work 2重写规则,但是当另一个处于活动状态时,其中一个规则无法按预期工作 RewriteCond %{HTTP:Accept-Language} ^es [NC] RewriteRule ^/?$ /$1?language=spanish [R=302] RewriteRule ^(.*)$ /$1?language=spanish [R=302] 第二种方法无论如何都是有效的。第一个不起作用,除非第二个不起作用。 我如何使它们一起工作 谢谢。使用L标志并在第二条规则中添加一个条件

我试图让work 2重写规则,但是当另一个处于活动状态时,其中一个规则无法按预期工作

RewriteCond %{HTTP:Accept-Language} ^es [NC]
RewriteRule ^/?$ /$1?language=spanish [R=302]
RewriteRule ^(.*)$ /$1?language=spanish [R=302]
第二种方法无论如何都是有效的。第一个不起作用,除非第二个不起作用。 我如何使它们一起工作

谢谢。

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

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

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

您可能需要将“L”标志添加到R=302,以确保不再应用任何规则。因此,生成的标志集将是[R=302,L]谢谢!我不知道为什么,但在这种情况下,我需要删除L标志,否则这根本不起作用。谢谢你的帮助:在这个案例中,我需要第二部分,否则就不行了。谢谢你,乔恩!