【问题标题】:.htaccess domain forwarding issue.htaccess 域转发问题
【发布时间】:2011-07-31 17:26:09
【问题描述】:

.htaccess 文件中的以下代码应该(除其他外)将辅助域重定向到主域:

<ifModule mod_headers.c>
Header unset Last-Modified
</ifModule>
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
RewriteCond %{HTTP_HOST} ^secondaryDomain1.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.secondaryDomain1.com$
RewriteRule ^/?$ "http\:\/\/mainDomain\.com\/" [R=301,L]
RewriteCond %{HTTP_HOST} ^secondaryDomain2.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.secondaryDomain2.com$
RewriteRule ^/?$ "http\:\/\/mainDomain\.com\/" [R=301,L]
RewriteCond %{HTTP_HOST} ^secondaryDomain3.com$ [OR]
RewriteCond %{HTTP_HOST} ^secondaryDomain3.com$
RewriteRule ^/?$ "http\:\/\/mainDomain\.com\/" [R=301,L]
RewriteCond %{HTTP_HOST} ^secondaryDomain4.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.secondaryDomain4.com$
RewriteRule ^/?$ "http\:\/\/mainDomain\.com\/" [R=301,L]
RewriteCond %{HTTP_HOST} ^secondaryDomain5.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.secondaryDomain5.com$
RewriteRule ^/?$ "http\:\/\/mainDomain\.com\/" [R=301,L]
RewriteCond %{HTTP_HOST} ^secondaryDomain6.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.secondaryDomain6.com$
RewriteRule ^/?$ "http\:\/\/mainDomain\.com\/" [R=301,L]
RewriteCond %{HTTP_HOST} ^secondaryDomain7.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.secondaryDomain7.com$
RewriteRule ^/?$ "http\:\/\/mainDomain\.com\/" [R=301,L]

不幸的是,如果我输入 www.secondaryDomain.com/index.html 或 www.secondaryDomain.com/directory 它不会重定向到主域。 .htacess 文件做错了什么?

【问题讨论】:

    标签: .htaccess dns redirect forwarding


    【解决方案1】:
    RewriteRule ^/?$ "http\:\/\/mainDomain\.com\/" [R=301,L]
    

    这会重写以 / 结尾的 URL 或根本不重写。你应该使用类似的东西:

    RewriteRule (.*) "http\:\/\/mainDomain\.com$1" [R=301,L,QSA]
    

    重定向并保留所有路径信息。

    【讨论】:

    • 谢谢@Laas,我想我越来越近了;现在,如果我输入 www.secondarydomain.com/index.html,它似乎会尝试重定向到 mainDomain.comindex.html。如果我输入 www.secondaryDomain.com/directory 我不会被重定向。
    • @Laas,我使用了 'RewriteRule (.*) "http\:\/\/mainDomain\.com\/$1" [R=301,L]' 并正确重定向"www.secondaryDomain.com/index.html 。所以问题解决了一半,谢谢!
    • 啊哈! “RewriteBase /”从 URL 的开头抢走了斜杠,所以是的,您的解决方案是正确的。
    • 要尝试的一件事是将所有与域相关的重写向上移动,就在RewriteEngine On 行的下方,以便在进行任何其他重写之前完成所有重定向,这对我来说很有意义.这个 /directory 真的存在吗?其中一条规则检查存在并将所有不存在的查询重写到 /index.php(并停止所有其他重写)
    • 谢谢,我已经把所有RewriteCond %{HTTP_HOST} ^secondaryDomain7.com$ [OR] RewriteCond %{HTTP_HOST} ^www.secondaryDomain7.com$ RewriteRule (.*) "http\:\/\/mainDomain\.com$1" [R=301,L,QSA]移动了
    【解决方案2】:

    试试这个:

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule (.*)$ http://mainDomain.com/ [L]
    </IfModule>
    

    我假设这个 .htaccess 文件是用于 secondarydomain.com ...

    【讨论】:

    • 感谢您的回答;我不知道 .htaccess 文件是否用于辅助域,它位于连接到这些域的网站所在的服务器上。我已尝试进行您建议的更改,但对我没有帮助。不过,感谢您提供帮助!
    • 试过了,再次感谢,但它不起作用;如果我键入 www.secondarydomain.com/index.html,它似乎会尝试重定向到 mainDomain.comindex.html(我收到“未找到服务器”错误)。如果我输入 www.secondaryDomain.com/directory 我没有被重定向,我不知道从那里去哪里。非常感谢您的帮助!
    猜你喜欢
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    • 2020-01-20
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多