我有以下网址:
http://www.domain.com/index.php?route=product/search&search=product%20keyword%20remove
我想使用htaccess从此网址中删除“关键字”。这是我到目前为止所做的,但没有按预期工作:
RewriteRule ^search=(.*?)keyword(.*?)$ search=$1$2 [L,R=301,NC]
我在这里做错了什么?另外,如何处理空格“%20”?因为至少还需要删除其中一个空格。
有多个网址包含“关键字”,但此关键字之前和之后的字词可能会有所不同,因此我尝试使用(。*)
由于
答案 0 :(得分:0)
要匹配带有查询字符串的网址,您还可以使用%{THE_REQUEST}变量。
RewriteCond %{THE_REQUEST} search=(.*?)keyword(.*?) [NC]
RewriteRule ^ /index.php?route=product/search&search=%1%2 [L,R]
%n是RewriteCond中正则表达式捕获组的一部分
答案 1 :(得分:0)
以下规则适合您:
RewriteEngine On
RewriteCond %{THE_REQUEST} \?(.*search=[^&]*)%20keyword(\S*)\sHTTP [NC]
RewriteRule ^ %{REQUEST_URI}?%1%2 [R=302,NE,L]