【问题标题】:Apache rewriterule and rewritecond with 3 domainsApache rewriterule 和 rewritecond 与 3 个域
【发布时间】: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 规则,但我不确定。

有什么想法吗?

【问题讨论】:

    标签: apache .htaccess mod-rewrite cpanel


    【解决方案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。对我来说有点复杂。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-22
    • 2012-05-03
    • 2011-08-04
    • 2014-01-03
    • 2020-07-21
    相关资源
    最近更新 更多