2010-08-21 97 views

回答

8

你想用mod_rewrite实现所谓的“301重定向”。

RewriteEngine ON 
RewriteRule ^/search\?keywords=somesearchterm$ /search/somesearchterm 

加入正则表达式:

RewriteEngine ON 
RewriteRule ^/search\?keywords=(.+) /search/$1 [R=301,L] 

R=301手段提供了301头重定向,以便在浏览器用户的URL变化,L手段不处理任何更多的重写规则,如果这一个匹配。


如果你想要做反向 - 换句话说,如果有人去mysite.com/search/asearchterm和你想要的网址保持不变,但“幕后”你想让它加载某些服务器脚本,这样做:

RewriteEngine ON 
RewriteRule ^/search/(.+) /search.php\?keywords=$1 [L] 
0

看看我的答案为另一个类似的线程!

Simulate file structure with PHP

这应该是你一个体面的答案!

+0

尼斯方法和答案以及编码的其他问题,但为什么这个问题不仅仅是“添加评论”,因为你对这个问题的回答根本不是答案,链接是记录你的答案,答案应该包含回答问题的信息,而不仅仅是某个其他页面的URL – jagb 2016-09-21 17:12:35

0

您无法在RewriteRule指令中匹配aginst查询字符串。使用%{THE_REQUEST}或%{QUERY_STRING}服务器变量相匹配的查询字符串:

以下规则工作正常,这种重定向

RewriteEngine On 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/search\?kewords=([^&\s]+) [NC] 
RewriteRule^/search/%1? [NE,NC,R,L] 

RewriteRule ^search/([^/]+)/?$ /search?keyword=$1 [QSA,NC,L] 
相关问题