Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.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 如果设置了参数,则不要重定向_.htaccess_Parameters - Fatal编程技术网

.htaccess 如果设置了参数,则不要重定向

.htaccess 如果设置了参数,则不要重定向,.htaccess,parameters,.htaccess,Parameters,我想重定向url,除非有一个名为login的参数值为false。 在几个regexp测试仪上测试了它,它的工作方式和我想要的一样。 但是,当它涉及到服务器时,它并没有。 我总是被重定向到?login=true 为什么? RewriteRule只匹配主机名之后和查询字符串之前的所有内容。您需要使用RewriteCond和%{QUERY\u STRING}变量 RewriteCond %{QUERY_STRING} !login=false RewriteRule (.*)write$ ?login

我想重定向url,除非有一个名为login的参数值为false。 在几个regexp测试仪上测试了它,它的工作方式和我想要的一样。 但是,当它涉及到服务器时,它并没有。 我总是被重定向到?login=true

为什么?


RewriteRule只匹配主机名之后和查询字符串之前的所有内容。您需要使用RewriteCond和
%{QUERY\u STRING}
变量

RewriteCond %{QUERY_STRING} !login=false
RewriteRule (.*)write$ ?login=true [L]
有关更多信息,请参阅

RewriteRule (.*)write$ ?login=true [QSA]
RewriteCond %{QUERY_STRING} !name=                      
RewriteRule .? - [S=1]
RewriteRule (.*)write$ ?login=true [L]
现在就这样了
对我有效

hm但后来又发生了另一件奇怪的事情。登录后,当我使用您的建议时,我还有一些参数,这些参数不再是我的php可读的。然后使用标志
QSA
。这只适用于重写规则,但不适用于条件,因为我的规则会被条件打断,所以从我的knowledge@StefanHövelmann条件检查查询字符串中的任意位置是否有字符串
login=false
。如果它匹配查询字符串中的任何位置,则条件的计算结果应为false(因为前缀
QSA
应该将请求中已经存在的任何参数附加到您在重写规则中定义的参数。
RewriteRule (.*)write$ ?login=true [QSA]
RewriteCond %{QUERY_STRING} !name=                      
RewriteRule .? - [S=1]
RewriteRule (.*)write$ ?login=true [L]