如何用.htaccess的301重定向将停放域名指向对应特定页面?
用.htaccess实现停放域名批量301重定向的高效方案
没问题!这种批量将所有停放域名重定向到特定页面的需求,用.htaccess完全可以高效实现——通过动态提取请求的主机名,就能自动生成符合你要求的目标URL。下面是具体配置和细节说明:
核心重写规则
直接将这段代码添加到你的.htaccess文件中(放在网站根目录):
# 开启URL重写引擎 RewriteEngine On # 排除主域名,避免循环重定向 RewriteCond %{HTTP_HOST} !^www\.mydomain\.com$ [NC] # 动态提取主机名并重定向到目标页面 RewriteRule ^(.*)$ https://www.mydomain.com/%{HTTP_HOST}/$1 [L,R=301]
规则详细解释
让我拆解一下每一行的作用,方便你理解和调整:
RewriteEngine On:必须开启Apache的mod_rewrite模块才能生效,这是所有重写规则的基础(如果不确定是否开启,可以联系主机服务商确认)。RewriteCond %{HTTP_HOST} !^www\.mydomain\.com$ [NC]:这是一个条件判断,意思是只有当请求的域名不是你的主域名www.mydomain.com时,才执行后面的重定向规则。[NC]标记表示不区分大小写,避免因域名大小写差异导致规则失效。RewriteRule ^(.*)$ https://www.mydomain.com/%{HTTP_HOST}/$1 [L,R=301]:这是核心逻辑:^(.*)$:匹配请求的URL路径部分(比如用户访问www.domain1.com/about.html,$1就会捕获about.html)。%{HTTP_HOST}:Apache的内置变量,会自动替换为当前请求的主机名(比如www.domain1.com),完美实现你需要的“提取根URL嵌入新URL”的需求。[L,R=301]:L表示这是最后一条规则,匹配后不再执行后续规则;R=301表示发送永久重定向的HTTP状态码,对SEO友好。
额外优化建议
根据实际场景,你可能需要调整规则来覆盖更多情况:
1. 同时处理不带www的停放域名
如果你的停放域名存在不带www的版本(比如domain1.com而非www.domain1.com),可以修改条件规则,同时排除主域名的两种形式:
RewriteCond %{HTTP_HOST} !^(www\.)?mydomain\.com$ [NC]
这样mydomain.com和www.mydomain.com都会被排除,避免循环。
2. 保留原URL的查询参数
如果需要保留原URL中的查询参数(比如www.domain1.com/?id=123),可以添加QSA标记,参数会自动附加到目标URL后:
RewriteRule ^(.*)$ https://www.mydomain.com/%{HTTP_HOST}/$1 [L,R=301,QSA]
3. 测试阶段用临时重定向
调试的时候建议先用R=302(临时重定向),确认规则完全符合预期后再改成R=301。因为301重定向会被浏览器缓存,调试阶段用临时重定向更方便修改规则。
内容的提问来源于stack exchange,提问作者gazivoda
相关产品推荐
相关产品推荐

