如何配置Apache Rewrite规则实现指定链接例外的子域名重定向
修正Apache Rewrite规则实现需求
你的规则问题出在:当mywebsite.com/about/被第一条规则重定向到mywebsite.com/about-our-services/后,这个新请求依然符合后面通用规则的条件(主机不是archive),所以又被重定向到了archive.mywebsite.com/about-our-services/,导致最终跳转错误。
要解决这个问题,需要在通用规则里排除那些不需要跳转到archive的路径(也就是例外规则的目标路径),同时确保例外规则优先执行。以下是修正后的完整规则:
RewriteEngine On # 处理 /about/ 重定向到主域名的 about-our-services RewriteRule ^about/$ https://mywebsite.com/about-our-services/ [L,R=301] # 处理 /people/ 重定向到主域名根目录 RewriteRule ^people/$ https://mywebsite.com/ [L,R=301] # 所有主域名下的请求,排除例外目标路径后,重定向到archive子域名 RewriteCond %{HTTP_HOST} ^mywebsite\.com$ # 排除 about-our-services 路径(兼容带/和不带/的情况) RewriteCond %{REQUEST_URI} !^/about-our-services/?$ # 排除根目录 RewriteCond %{REQUEST_URI} !^/?$ RewriteRule ^(.*)$ https://archive.mywebsite.com/$1 [L,R=301]
规则逻辑说明:
- 前两条规则优先处理指定的例外跳转,
[L]标志确保匹配后停止后续规则处理,避免冲突。 - 通用规则新增两个
RewriteCond:- 限定仅处理主域名
mywebsite.com的请求 - 排除
/about-our-services/(包括不带尾部斜杠的情况)和根目录/,确保这两个路径留在主域名,不会被转去archive
- 限定仅处理主域名
- 其余所有主域名下的路径,都会被重定向到
archive.mywebsite.com的对应路径。
内容的提问来源于stack exchange,提问作者Jamie
相关产品推荐
相关产品推荐

