如何通过.htaccess将指定URL 301重定向到目标URL?
解决.htaccess 301重定向失效问题
你原来的Redirect指令失效,是因为Apache的Redirect(属于mod_alias模块)基于请求路径匹配,不能直接用完整HTTPS URL作为匹配目标。下面提供两种可行方案:
方案一:使用RedirectMatch(mod_alias)
如果该.htaccess仅部署在whatever-12345.de的网站根目录下,直接用正则匹配路径即可:
RedirectMatch 301 ^/something.html$ https://whatever.de/something.html
^/something.html$确保精确匹配根目录下的something.html文件,避免误匹配其他路径。
方案二:使用mod_rewrite(更灵活)
如果服务器开启了mod_rewrite模块(多数主机默认支持),可以精确匹配主机名和路径,适合多域名共用配置的场景:
RewriteEngine On # 匹配请求的主机名为whatever-12345.de(NC表示不区分大小写) RewriteCond %{HTTP_HOST} ^whatever-12345\.de$ [NC] # 匹配路径为something.html,重定向到目标URL RewriteRule ^something\.html$ https://whatever.de/something.html [R=301,L]
参数说明:
[R=301]:标记为永久重定向[L]:表示这是最后一条规则,停止后续规则处理
注意事项
- 测试阶段建议先用
R=302临时重定向,避免浏览器缓存301规则导致调试困难,确认生效后再改为301 - 确保Apache服务器开启对应模块:mod_alias默认开启,mod_rewrite可能需要通过
a2enmod rewrite(Debian/Ubuntu)或修改配置文件加载 - 服务器需允许.htaccess覆盖配置,即Apache主配置中对应目录的
AllowOverride需设置为All或FileInfo
内容的提问来源于stack exchange,提问作者user4095519
相关产品推荐
相关产品推荐

