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(两者同时)?