vb4迁移vb5后如何配置URL Rewrite仅重写根请求忽略子目录
解决方案
你之前的规则失效核心原因有两个:
- 正则没有限定匹配根目录下的单层路径,只要URL中出现「数字-」的片段就会触发匹配
- 你用
RewriteCond %{REQUEST_FILENAME} !-d过滤无效,是因为VB5的/category/subcategory/这类路径是伪静态路由,不是服务器上真实存在的物理目录,所以目录不存在判断永远为真,无法过滤这类请求
正确重写配置
在站点根目录的.htaccess文件中写入以下规则即可:
RewriteEngine On # 仅匹配根目录下 数字-标题 格式的旧URL RewriteRule ^([0-9]+)-[^/]+$ https://www.example.com/showthread.php?t=$1 [L,R=301]
规则说明
- 正则开头的
^限定匹配请求路径的起始位置 [^/]+匹配帖子标题部分时,禁止出现斜杠,确保路径中没有子目录层级- 结尾的
$限定匹配路径结束,避免匹配更长的带后缀路径
注意事项
测试阶段建议先将R=301改为R=302临时重定向,避免浏览器缓存永久重定向规则导致调试异常,确认规则生效后再改回301即可。
内容的提问来源于stack exchange,提问作者heugabel
相关产品推荐
相关产品推荐

