.htaccess Htaccess正则表达式,它将特定模式重定向到主页,

nhhxz33t  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(110)

我尝试使用正则表达式将包含/page/?lang=xx&lang=xx的查询重定向到主页。
到目前为止,我已经尝试过了,规则的第一部分有效,但第一个问号后面有?lang=&lang=的部分无效。

RewriteRule ^page/([0-9]+)/?(\?|&)lang=([a-z]{2})$ https://example.com [R=301,L]

任何帮助都将不胜感激。

a0zr77ik

a0zr77ik1#

RewriteRule ^page/([0-9]+)/?(\?|&)lang=([a-z]{2})$ https://example.com [R=301,L]

RewriteRule指令仅与URL-path匹配。要与查询字符串匹配,需要与前面的 condition 中的QUERY_STRING服务器变量匹配。例如:

RewriteCond %{QUERY_STRING} (^|&)lang=[a-z]{2}(&|$)
RewriteRule ^page/\d+/?$ https://example.com/ [R=301,L]

您没有指定要匹配的实际URL,因此根据您的规则,将匹配/page/<number>/的URL,其中尾部斜杠是可选的。另外,lang URL参数必须出现在查询字符串中的任何位置,并且其值必须是两个字母。如果存在lang URL参数,但为 * 空 * 或包含两个以上的字母,则不会匹配,也不会发生重定向。
\d是与[0-9]相同的速记字符类。不需要原始规则中的捕获子组。
首先使用302(临时)重定向进行测试以避免潜在的缓存问题。确保在测试之前清除浏览器缓存。

相关问题