网站URL Rewriting生效但自动跳转失效,如何调整.htaccess规则修复
问题原因
你现有的重写规则只实现了单向映射:仅当用户访问静态化的.html后缀URL时,内部重写到对应的动态PHP脚本,没有对直接访问动态PHP URL的请求做跳转处理,所以不会自动跳转到美化后的URL。
修复方案
你需要额外新增两条规则,先匹配访问动态PHP路径的请求,跳转至对应的静态URL,再保留原有的内部重写规则即可,修改后的完整.htaccess代码如下:
Options +FollowSymLinks RewriteEngine on # 匹配动态URL请求,对外跳转至静态URL RewriteCond %{THE_REQUEST} /Sports-Equipment\.php\?Catname=([^\s&]+) [NC] RewriteRule ^ Sports-Equipment-Catname-%1.html? [R=301,L] # 原有内部重写规则,处理静态URL到动态脚本的映射 RewriteRule Sports-Equipment-Catname-(.*)\.html$ Sports-Equipment.php?Catname=$1 [L]
规则说明
- 新增的
RewriteCond通过匹配THE_REQUEST变量(浏览器发起的原始请求内容),避免和后面的内部重写规则形成死循环 - 跳转规则末尾的
?作用是去掉跳转后URL里的原始查询参数,保证最终URL是你需要的静态格式 R=301表示永久跳转,有利于搜索引擎权重收敛,测试阶段可以先改为R=302临时跳转避免缓存影响- 每条规则末尾加
[L]表示匹配成功后停止执行后续规则,提升执行效率
内容的提问来源于stack exchange,提问作者Vinex Sports
相关产品推荐
相关产品推荐

