如何使用 htaccess 将多个域重定向到除 1 个目录之外的另一个域?

Posted

技术标签:

【中文标题】如何使用 htaccess 将多个域重定向到除 1 个目录之外的另一个域?【英文标题】:How to redirect multiple domains to another domain except 1 directory using htaccess? 【发布时间】:2011-08-22 21:55:06 【问题描述】:

我正在尝试将多个域重定向到单个域(工作正常) 但我希望一个目录不重定向或更改主域 url。

这是我的 .htaccess 代码,直到这里都可以正常工作

这个正在工作

<pre>
    RewriteCond %HTTP_HOST    ^http(s)?://(www.)?domain.com$  [OR]
    RewriteCond %HTTP_HOST    ^http(s)?://(www.)?domain.net$  [OR]
    RewriteCond %HTTP_HOST    ^http(s)?://(www.)?domain.org$  [OR]
    RewriteCond %HTTP_HOST    ^domain.info$ [OR]
    RewriteCond %HTTP_HOST    !^www.domain.info
    RewriteRule (.*)    http://www.domain.info/$1   [R=301,L]
</pre>

但是当我尝试停止重定向一个特定目录时

完整代码

<pre>
    RewriteCond %HTTP_HOST    ^http(s)?://(www.)?domain.com$  [OR]
    RewriteCond %HTTP_HOST    ^http(s)?://(www.)?domain.net$  [OR]
    RewriteCond %HTTP_HOST    ^http(s)?://(www.)?domain.org$  [OR]
    RewriteCond %HTTP_HOST    ^domain.info$        [OR]
    RewriteCond %HTTP_HOST    !^www.domain.info   [OR]
    RewriteCond %REQUEST_URI  !^/no_redirect_dir/
    RewriteRule (.*)    http://www.domain.info/$1   [R=301,L]
</pre>

这一切都停止了工作 :( 出现页面未正确重定向的错误。

导致错误的额外代码

<pre>
    RewriteCond %HTTP_HOST    !^www.domain.info   [OR]
    RewriteCond %REQUEST_URI  !^/no_redirect_dir/
</pre>

任何帮助将不胜感激。

谢谢!

【问题讨论】:

【参考方案1】:

像这样写你的 .htaccess:

RewriteCond %HTTP_HOST (www\.)?domain\.(org|net|com)$ [NC]
RewriteCond %REQUEST_URI !^/*no_redirect_dir/ [NC]
RewriteRule ^(.*)$ http://www.domain.info/$1 [R=301,L]

HTTP_HOST 变量只有域名,没有 http/https 信息。

【讨论】:

以上是关于如何使用 htaccess 将多个域重定向到除 1 个目录之外的另一个域?的主要内容,如果未能解决你的问题,请参考以下文章

htaccess 将旧域重定向到新域

Htaccess 规则将域重定向到 index.html

301 使用 .htaccess 从旧域重定向到新域

301使用.htaccess将一个域重定向到另一个域

.htaccess 将域重定向到子目录而不更改 URL

.htaccess 将动态域重定向到文件夹