如何用.htaccess实现301重定向:单站及多站至子目录
站点301重定向解决方案
问题1:将旧站点siteA所有页面重定向至siteB的X子目录
在siteA根目录的.htaccess文件中添加以下规则(需确保服务器启用mod_rewrite模块):
RewriteEngine On # 匹配siteA的域名,不区分大小写 RewriteCond %{HTTP_HOST} ^(www\.)?siteA\.com$ [NC] # 保留原页面路径,重定向到siteB/X下对应页面 RewriteRule ^(.*)$ https://siteB.com/X/$1 [R=301,L]
规则说明:
RewriteEngine On:开启URL重写功能RewriteCond:精准匹配siteA的主域名及带www的域名RewriteRule:$1会替换为原请求的路径(比如siteA.com/page1会重定向到siteB.com/X/page1),R=301标记永久重定向,L表示执行完该规则后停止后续匹配
问题2:同一目录下50个站点统一根目录重定向到siteB/X
可行,只要所有站点都指向同一个包含.htaccess的目录,即可用单文件实现统一规则:
仅重定向根目录(比如http://siteN.com/ → https://siteB.com/X/)
RewriteEngine On # 排除目标站点siteB,避免循环重定向 RewriteCond %{HTTP_HOST} !^siteB\.com$ [NC] # 匹配根目录请求 RewriteRule ^$ https://siteB.com/X/ [R=301,L]
重定向所有页面(所有站点的任意页面都转到siteB/X对应路径)
如果需要将这些站点的所有页面都重定向,可使用:
RewriteEngine On RewriteCond %{HTTP_HOST} !^siteB\.com$ [NC] RewriteRule ^(.*)$ https://siteB.com/X/$1 [R=301,L]
规则说明:
RewriteCond %{HTTP_HOST} !^siteB\.com$:排除siteB本身,防止出现重定向循环RewriteRule ^$:仅匹配站点根目录的请求;若用^(.*)$则匹配所有路径
内容的提问来源于stack exchange,提问作者Domains G
相关产品推荐
相关产品推荐

