htaccess配置的RewriteRule测试环境正常 线上站点不生效求助
修正后的可直接使用的.htaccess配置
Options -MultiViews RewriteEngine On RewriteBase / # HTTP转HTTPS RewriteCond %{HTTPS} off RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # SHORT路径重写规则 RewriteCond %{HTTP_HOST} ^(www\.)?my-website\.com$ [NC] RewriteRule ^SHORT(/.*)?$ $1?devname=short [L,QSA]
核心修改&排查点说明
- 关闭MultiViews:OVH默认配置大概率开启了内容协商的MultiViews功能,会优先匹配与路径名同名的静态文件/脚本,优先级高于重写规则,关闭后可排除该影响
- 增加
RewriteBase /:站点根目录绑定到/www/文件夹的情况下,明确指定重写规则的根路径为站点根目录,避免相对路径匹配异常 - 修正HTTP_HOST匹配规则:新增
[NC]标记忽略大小写,同时用正则锚点明确匹配根域名和带www的域名,避免域名匹配遗漏 - 移除重写目标的域名前缀:原本带https://域名前缀的写法会触发外部302跳转,而非你需要的服务器内部重写,改为相对路径后即可实现内部隐式重写,地址栏不会发生变化
- 给HTTP跳转规则增加
[L,R=301]标记:明确告知搜索引擎是永久跳转,同时标记为最后一条规则,避免后续规则在跳转前误执行
额外排查项
如果修改后仍不生效,可排查两个常见OVH配置问题:
- 确认OVH主机面板中已开启mod_rewrite支持,部分虚拟主机默认未开启该模块
- 清理浏览器缓存后再测试,原有301/302跳转缓存会导致规则修改后看不到最新效果
内容的提问来源于stack exchange,提问作者djackdonovan
相关产品推荐
相关产品推荐

