.htaccess重定向失效:网站友好URL无法跳转至新路径
解决.htaccess重定向无效果的问题
问题原因
你用的Redirect规则没生效,是因为服务器上mod_rewrite模块的规则(也就是你现有的RewriteRule)执行优先级比mod_alias的Redirect高。请求进来后,先被RewriteRule ^buy-online-(.*) ./displayitems.php?url=$1匹配并转发到物理文件,Redirect规则根本没机会触发。
解决方案
不管是单个URL重定向还是批量重定向,都要用mod_rewrite的规则来实现,并且把重定向规则放在现有RewriteRule的前面,因为规则是从上到下匹配执行的。
1. 单个URL重定向
如果只需要重定向某一个特定的URL,添加这条规则在现有规则上方:
RewriteRule ^buy-online-alhabib-rings4-sku-1658906163$ /products/jewelry/buy-online-alhabib-rings4-sku-1658906163 [R=301,L]
[R=301]表示永久重定向,对SEO友好[L]表示匹配到这条规则后就停止处理后续规则,避免被后面的转发规则干扰
2. 批量重定向所有buy-online开头的URL
如果所有buy-online-xxx格式的URL都需要转到/products/jewelry/buy-online-xxx,可以用这条批量规则:
RewriteRule ^buy-online-(.*)$ /products/jewelry/buy-online-$1 [R=301,L]
这条规则会自动把原URL中buy-online-后面的部分,拼接在新路径的末尾,一次性处理所有同格式的URL。
最终.htaccess示例
调整后的规则顺序应该是这样:
# 重定向规则(单个或批量)放在最前面 RewriteRule ^buy-online-(.*)$ /products/jewelry/buy-online-$1 [R=301,L] # 原有的转发规则放在后面 RewriteRule ^buy-online-(.*) ./displayitems.php?url=$1
内容的提问来源于stack exchange,提问作者Ather Shahzad
相关产品推荐
相关产品推荐

