使用重写规则.htaccess替换URL中的特殊字符

时间:2016-09-06 03:47:40

标签: php .htaccess url-rewriting

我正在使用

重写我的网址
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]
RewriteCond %{QUERY_STRING} ^search_query=(.+)$ 
RewriteRule ^search/videos$ /search/videos/%1? [R=301,L]

XXX.XXX.XXX.XX/search/videos?search_query=XXXX+XXXXXXX.XXX.XXX.XX/search/videos/XXXX+XXXX

现在问题是我要替换" +"用" - "带连字符的空格(+)。我尝试了以下代码,但没有工作。

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(.*?)(?:\+|%20|\s)+(.+?)\sHTTP [NC]
RewriteRule ^ %1-%2 [L,NE,R=302]

我有上面的代码用连字符替换空格,但我想与下面的代码集成。

RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]
RewriteCond %{QUERY_STRING} ^search_query=(.+)$ 
RewriteRule ^search/videos$ /search/videos/%1? [R=301,L]

1 个答案:

答案 0 :(得分:0)

我已经在上面的查询中找到解决方案我已经写了这样的重写规则。

首先将您想要的URL转换为您,然后删除特殊字符形式的URL。

RewriteCond %{QUERY_STRING} ^search_query=(.+)$ 
RewriteRule ^search/videos$ /search/videos/%1? [R=301,L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(.*?)(?:\+|%20|\s)+(.+?)\sHTTP [NC]
RewriteRule ^ /%1-%2 [L,NE,R=302]