Apache rewriterule 和 rewritecond 与 3 个域

Posted

技术标签:

【中文标题】Apache rewriterule 和 rewritecond 与 3 个域【英文标题】:Apache rewriterule and rewritecond with 3 domains 【发布时间】:2012-02-29 00:21:41 【问题描述】:

我有三个域(domain1.es、domain2.com、domain3.com)。

我需要那个:

domain1.es OR www.domain1.es,显示www.domain1.es/catalog的内容

domain2.com 或 www.domain2.com,重定向到 www.domain1.es 并显示 www.domain1.es/catalog 的内容

domain3.com OR www.domain3.com,显示www.domain3.com的内容

我正在使用 cpanel,并且我有 domain3.com 就像一个附加域,配置为使用 /public_html/domain3.com 文件夹作为 Web 根文件夹。

我已经尝试过使用 htaccess:

RewriteEngine on
RewriteCond %THE_REQUEST ^GET\ /catalog/
RewriteRule ^catalog/(.*) /$1 [L,R=301]
RewriteRule !^catalog/ catalog%REQUEST_URI [L]
RewriteCond %HTTP_HOST ^domain2\.com$ [OR]
RewriteCond %HTTP_HOST ^www\.domain2\.com$
RewriteRule ^/?$ "domain1\.es" [R=301,L]

所有域都在同一个主机中,根文件夹为 /public_html。那么

www.domain1.es 显示/public_html/catalog的内容 domain1.es 显示/public_html/catalog 的内容 www.domain2.com 显示/public_html/catalog的内容 domain2.com显示/public_html/catalog的内容

我正在编写 domain3 规则,但我不确定。

有什么想法吗?

【问题讨论】:

【参考方案1】:

使用此代码:

Options +FollowSymLinks -MultiViews
RewriteEngine on

# domain2.es => domain1.es/catalog
RewriteCond %HTTP_HOST ^(www\.)?domain2\.es$ [NC]
RewriteRule ^ http://www.domain1.es/catalog%REQUEST_URI [L,R=301]

# domain1.es/foo => domain1.es/catalog/foo
RewriteCond %HTTP_HOST ^(www\.)?domain1\.es$ [NC]
RewriteRule ^((?!catalog/).*)$ catalog/$1 [L,NC]

# domain3.es => www.domain3.es
RewriteCond %HTTP_HOST ^domain3\.es$ [NC]
RewriteRule ^ http://www.domain3.es/%REQUEST_URI [L,R=301]

【讨论】:

您错过了 domain3,并且您在上一个 RewriteRule 中错过了 ( It doesn't work 没有帮助。请告诉我哪个 URI 不适合你。 [这个评论框有问题,抱歉] Anubhava:谢谢,但它不起作用。我尝试过: Options +FollowSymLinks -MultiViews RewriteEngine on # domain2.com => domain1.es/catalog RewriteCond %HTTP_HOST ^(www\.)?domain2\.com$ [NC] RewriteRule ^ domain1.es/catalog%REQUEST_URI [L,R=301] # domain1.es/foo => domain1.es/catalog/foo RewriteCond %HTTP_HOST ^(www\.)?domain1\.es$ [NC] RewriteRule ^(?!catalog/) .*)$ catalog/$1 [L,NC] 这样一来所有域都出错了。 感谢您的第二条评论,我会再试一次。但是,目前,我不知道如何添加 domain3 才能正常工作。 现在可以了 :-)。谢谢大家。我尝试过: Options +FollowSymLinks -MultiViews RewriteEngine on # domain2.com => www.domain1.es RewriteCond %HTTP_HOST ^(www\.)?domain2\.com$ [NC] RewriteRule ^ domain1.es% REQUEST_URI [L,R=301] # domain1.es/foo => domain1.es/catalog/foo RewriteCond %HTTP_HOST ^(www\.)?domain1\.es$ [NC] RewriteRule ^((?! catalog/).*)$ catalog/$1 [L,NC] 现在 domain3 工作正常 :-),没有更多规则。你知道一个链接,向cero学习,编写htaccess规则吗?我试图搜索,但所有的inf。对我来说有点复杂。再次感谢。

以上是关于Apache rewriterule 和 rewritecond 与 3 个域的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess RewriteRule 导致 403 Forbidden

Apache HTTPD RewriteRule 中的 ^ 和 $ 是啥意思?

强制 SSL 重定向 - Apache/IHS RewriteCond 和 RewriteRule

如何在 apache 2.4 RewriteRule 中使用发布数据规则编写替换和重定向 url(两者同时)?

Apache rewriterule 和 rewritecond 与 3 个域

使用 Apache RewriteRule 和 RewriteCond 将替代内容设置到特定日期 [关闭]