.htaccess 从 GET 变量重定向到 url 字符串
Posted
技术标签:
【中文标题】.htaccess 从 GET 变量重定向到 url 字符串【英文标题】:.htaccess redirect from GET variable to url string 【发布时间】:2011-04-02 03:46:10 【问题描述】:我需要重定向
/search?keywords=somesearchterm
到
/search/somesearchterm
这似乎非常基本,但我已经用头敲了一个小时。
感谢您抽出宝贵时间查看此内容。
【问题讨论】:
【参考方案1】:您不能匹配 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]
【讨论】:
【参考方案2】:您想使用 mod_rewrite 实现所谓的“301 重定向”。
RewriteEngine ON
RewriteRule ^/search\?keywords=somesearchterm$ /search/somesearchterm
添加正则表达式:
RewriteEngine ON
RewriteRule ^/search\?keywords=(.+) /search/$1 [R=301,L]
R=301
表示提供 301 Header 重定向,以便用户的 URL 在浏览器中更改,L
表示如果匹配,则不再处理任何重写规则。
如果你想反其道而行之——换句话说,如果有人访问mysite.com/search/asearchterm
,并且你希望 URL 保持不变,但“在幕后”你希望它加载某个服务器脚本,请执行这个:
RewriteEngine ON
RewriteRule ^/search/(.+) /search.php\?keywords=$1 [L]
【讨论】:
以上是关于.htaccess 从 GET 变量重定向到 url 字符串的主要内容,如果未能解决你的问题,请参考以下文章
使用 .htaccess 将路径字符串作为 GET 变量重定向到主页
301 基于 .htaccess 中的 GET 变量重定向 URL
.htaccess 中的 301 重定向错误,显示“Bots Get Naked Version”而不是重定向
如何使用 htaccess 将 example.com/x/restofurl 重定向到 example.com/y/restofurl