如何通过.htaccess将旧域名下带.html后缀的URL重定向到子域名
.htaccess 配置:将旧域名的.html页面重定向到archive子域名
以下配置可实现把旧域名下所有以.html结尾的HTTP请求,重定向到archive子域名的对应路径,同时避免和WordPress规则冲突:
# 启用重写引擎 RewriteEngine On # 匹配HTTP请求(旧站点未启用HTTPS),且请求路径以.html结尾(不区分大小写) RewriteCond %{HTTPS} off RewriteCond %{REQUEST_URI} \.html$ [NC] # 重定向到archive子域名,保留完整请求路径,使用301永久重定向 RewriteRule ^(.*)$ http://archive.example.com/$1 [R=301,L] # --- 下方保留WordPress默认规则(确保上面的重定向规则在这部分之前) --- # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
关键说明:
- 规则顺序:必须把重定向规则放在WordPress默认规则的上方,否则WordPress的路由规则会先处理请求,导致重定向失效
- 301重定向:使用
R=301是永久重定向,对SEO友好;如果是测试阶段,可以临时改用R=302(临时重定向),确认正常后再改回301 - 不区分大小写:
[NC]标记让规则匹配.HTML、.Html等各种大小写组合的后缀 - 路径保留:
$1会捕获原始请求的完整路径,确保旧URL的层级结构(比如/gallery/first-galery.html)完整映射到子域名 - HTTPS过滤:
RewriteCond %{HTTPS} off确保只处理HTTP请求,符合旧站点未使用HTTPS的需求
注意事项:
- 将配置中的
example.com替换为你的实际域名 - 确保服务器已经启用了
mod_rewrite模块 - 测试时可以通过浏览器开发者工具的「网络」面板,查看请求的重定向状态码是否为301
内容的提问来源于stack exchange,提问作者Nikola
相关产品推荐
相关产品推荐

