如果页面和查询字符串匹配,则应重写url

时间:2016-09-04 05:14:18

标签: php regex .htaccess url-rewriting

如果我的网址和查询字符串匹配,我想重定向页面我尝试了很多但没有成功,请你告诉我我哪里做错了。

我的网址是

http://xxx.xxx.xxx.xx/search/videos?search_query=xxx+xxx

我想重定向(使用.htaccess重写)到

http://xxx.xxx.xxx.xx/search/videos/xxx+xxx

我试过了

RewriteCond %{QUERY_STRING} ^search_query=([A-Za-z0-9]*)$ 
RewriteRule ^search/videos$ search/videos/$1 [R=301,L]

RewriteCond %{QUERY_STRING} "search_query=" [NC]
RewriteRule ^(.*)$ search/videos/$1? [L,QSA]

RewriteCond %{QUERY_STRING} ^search_query=$1 [NC]
RewriteRule ^(.*)$ search/videos/$1? [L,QSA]

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您可以使用以下规则

RewriteEngine on
#terminate the 2nd rewrite iteration
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]
# redirect "/search/videos?search_query?foobar" to "/search/videos/foobar"
RewriteCond %{QUERY_STRING} ^search_query=(.+)$ 
RewriteRule ^search/videos$ /search/videos/%1? [R=301,L]
#internally map "/search/videos/foobar" to "/search/videos?search_query?foobar" 
RewriteRule ^search/videos/([^/]+)/?$ /search/videos/?search_query=$1 [NC,L]