使用htaccess从url中删除关键字

时间:2016-01-14 13:28:19

标签: regex apache .htaccess mod-rewrite url-rewriting

我有以下网址:

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”?因为至少还需要删除其中一个空格。

有多个网址包含“关键字”,但此关键字之前和之后的字词可能会有所不同,因此我尝试使用(。*)

由于

2 个答案:

答案 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]