.htaccess 使用get参数和remove same参数进行htaccess重定向

gcuhipw9  于 2022-11-16  发布在  其他
关注(0)|答案(2)|浏览(147)

请帮助我将search.html?searchword=value&searchphrase=all重定向到search.html?searchword=value
我试探着:

RewriteCond %{QUERY_STRING} ^searchword=(.*) [NC]
RewriteCond %{QUERY_STRING} searchphrase= [NC]
RewriteRule ^(.*)$ /search.html\?searchword=%1 [R=301,L]

但它不起作用。

jutyujz0

jutyujz01#

您可以这样使用它:

RewriteCond %{QUERY_STRING} (?:^|&)searchphrase= [NC]
RewriteCond %{QUERY_STRING} (?:^|&)(searchword=[^&]*) [NC]
RewriteRule ^search\.html$ %{REQUEST_URI}?%1 [R=301,L,NC,NE]

变更包括:

  • RewriteCond的顺序很重要。请将捕获组的条件保留为最后一个
  • 无需在目标中再次重复searchword,只需从RewriteCond捕获并在以后将其用作反向参考%1
  • 不使用.*,而是使用[^&]*来仅匹配值,直到获得下一个&或字符串结尾
  • 匹配规则模式中的search.html以避免匹配其他任何内容
ygya80vv

ygya80vv2#

请使用您显示示例和尝试尝试尝试以下.htaccess规则请确保在测试URL之前清除浏览器缓存

RewriteEngine ON
RewriteCond %{THE_REQUEST} \s/(search\.html)\?(searchword=[^&]*)&searchphrase=all [NC]
RewriteRule ^ /%1?%2 [R=301,L,NE]

相关问题