.htaccess从GET变量重定向到url字符串

Eri*_*VGG 7 .htaccess mod-rewrite query-string

我需要重定向

/search?keywords=somesearchterm
Run Code Online (Sandbox Code Playgroud)

/search/somesearchterm
Run Code Online (Sandbox Code Playgroud)

这似乎非常基本,但我一直在冲击它一小时.

感谢您抽出宝贵时间来看看这个.

Mic*_*ler 10

您想使用mod_rewrite实现所谓的"301重定向".

RewriteEngine ON
RewriteRule ^/search\?keywords=somesearchterm$ /search/somesearchterm
Run Code Online (Sandbox Code Playgroud)

添加正则表达式:

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

R=301表示提供301标题重定向,以便用户的URL在浏览器中更改,并且L如果匹配规则,则表示不再处理任何重写规则.


如果你想反过来 - 换句话说,如果有人去了mysite.com/search/asearchterm你希望URL保持不变,但是"幕后"你希望它加载某个服务器脚本,请执行以下操作:

RewriteEngine ON
RewriteRule ^/search/(.+) /search.php\?keywords=$1 [L]
Run Code Online (Sandbox Code Playgroud)