如何用.htaccess规则将域名所有404页面301重定向到目标域名对应路径
完全可以通过.htaccess实现你需要的重定向规则,以下是具体配置方法:
前提说明
首先需要确认你的Apache服务器已经开启mod_rewrite模块,且站点根目录的.htaccess文件已被允许生效(需要在Apache对应虚拟主机配置中设置AllowOverride All)。
你当前场景的配置方案
要把example.com下的404路径跳转到old.example.com的对应路径,直接在example.com站点根目录的.htaccess文件中添加以下规则即可:
RewriteEngine On # 判断请求路径不是真实存在的文件 RewriteCond %{REQUEST_FILENAME} !-f # 判断请求路径不是真实存在的目录 RewriteCond %{REQUEST_FILENAME} !-d # 满足上述两个条件即判定为404请求,301重定向到old.example.com对应路径 RewriteRule ^(.*)$ https://old.example.com/$1 [L,R=301]
通用配置方案
如果需要将任意域名domain.com的404请求重定向到newdomain.com的对应路径,只需替换上述规则中的目标域名即可,通用规则如下:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ https://newdomain.com/$1 [L,R=301]
补充注意事项
- 配置完成后建议清除浏览器缓存再测试,避免301永久重定向的本地缓存影响测试结果
- 如果站点使用HTTP协议而非HTTPS,将规则中的
https替换为http即可 - 规则默认会保留原请求的GET参数,例如
example.com/aaa?id=1会自动跳转到old.example.com/aaa?id=1,如果需要显式声明可以在规则最后增加QSA标志,即修改为[L,R=301,QSA]
内容的提问来源于stack exchange,提问作者Hussain Abdullah
相关产品推荐
相关产品推荐

