我想通过mod-rewrite将访问重定向到我的某个网址,只有当请求没有我的网站作为引荐来源时,我才想要排除带参数的特定网址。
这是我今天的规则(适用于重定向):
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{REQUEST_URI} .*profile/login*
RewriteCond %{HTTP_REFERER} !^http(s)?://example.com(/)?.*$ [NC]
RewriteCond %{HTTP_REFERER} ^$
RewriteRule ^(.*)$ https://example.com/ [R=307,L]
</ifModule>
但我希望以下网址不被重定向:
https://example.com/profile/login/?my_param=my-param-value&key=XXXXXXX
我之前不知道查询字符串值,只知道查询字符串名称。
如何排除规则的网址?
谢谢,
此致
GV
答案 0 :(得分:0)
我在.htaccess文件中使用以下条件来排除具有特定查询字符串参数和值的网址。
RewriteCond%{QUERY_STRING}!(^ |&amp;)rcp_action = lostpassword_reset($ |&amp;)
考虑到您的重写规则,我添加了一个新行来检查%{QUERY_STRING}条件,如下所示:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{REQUEST_URI} .*profile/login*
RewriteCond %{HTTP_REFERER} !^http(s)?://example.com(/)?.*$ [NC]
RewriteCond %{QUERY_STRING} !(^|&)rcp_action=lostpassword_reset($|&)
RewriteCond %{HTTP_REFERER} ^$
RewriteRule ^(.*)$ https://example.com/ [R=307,L]
</ifModule>
在您的情况下,您需要使用参数名称rcp_action
替换my_param
,并使用参数值lostpassword_reset
替换my-param-value
。< / p>
我已经在我自己的网站SlideModel中对此进行了测试,根据查询字符串参数,根据特定条件将用户重定向到维护页面。