我需要重定向
/search?keywords=somesearchterm
到
/search/somesearchterm
这看起来非常基本,但我一直在用头撞它一个小时。
感谢您花时间看这个。
最佳答案
您想使用 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 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3539522/