Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.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
Apache 重写规则更改正则表达式以标识URL中的不同模式_Apache_.htaccess_Mod Rewrite_Httpd.conf - Fatal编程技术网

Apache 重写规则更改正则表达式以标识URL中的不同模式

Apache 重写规则更改正则表达式以标识URL中的不同模式,apache,.htaccess,mod-rewrite,httpd.conf,Apache,.htaccess,Mod Rewrite,Httpd.conf,下面的“重写配置”仅重定向表单的url /fetchHomePage.action?site=eu RewriteCond %{QUERY_STRING} ^site=(eu|jp|in)$ [NC] RewriteRule ^/?fetchHomePage.action$ https://example.com/%1? [R=301,L,NC] 我应该在上面的正则表达式中做些什么更改,这样它甚至可以像这样重定向url /行动;jsessionid=60E508BF73717B6BE0C38D

下面的“重写配置”仅重定向表单的url

/fetchHomePage.action?site=eu

RewriteCond %{QUERY_STRING} ^site=(eu|jp|in)$ [NC]
RewriteRule ^/?fetchHomePage.action$ https://example.com/%1? [R=301,L,NC]
我应该在上面的正则表达式中做些什么更改,这样它甚至可以像这样重定向url

/行动;jsessionid=60E508BF73717B6BE0C38D80769A0A22?站点=eu


这里的潜在客户很受欢迎?

匹配a没有问题;在url路径中

带有“;”的url路径不匹配为查询字符串,您可以将其与重写规则匹配,就像与其他任何内容匹配一样

因此,要匹配jsessionid,只需将其附加到匹配的url路径,如下所示:

RewriteCond %{QUERY_STRING} ^site=(eu|jp|in)$ [NC]
RewriteRule ^/?fetchHomePage.action;jsessionid=60E508BF73717B6BE0C38D80769A0A22 https://example.com/%1? [R=301,L,NC]

没有必要逃避它。至于jsession id的字符串本身,您可以根据需要进行匹配,比如(.*),可能有更合适、更具体的方法进行匹配,但这取决于您的偏好。

既然您基本上是复制粘贴请求发送的任何查询字符串,为什么不使用[QSA]标记并摆脱查询字符串检查?我需要查询字符串检查,因为我只想在查询字符串中有一个参数时重定向。你能帮助我如何检测“jsessionid=60E508BF73717B6BE0C38D80769A0A22”吗?好吧,然后读我的答案,但是有一种可能是jsessionid不在url中,你是不是建议写两条规则,一条用于jsessionid,另一条用于不带jsessionid的?也没有必要,你可以使用(;jessionid=where)?即使jsessionid不存在,它也将匹配相同的uri。我认为我们不应该在这里讨论正则表达式。你能帮我解决这个问题吗