【问题标题】:How to redirect all other domain except one?如何重定向除一个以外的所有其他域?
【发布时间】:2013-06-20 12:25:48
【问题描述】:

我有一个主机设置,我的主域是 domain1.com。另一个域的列表被添加为别名,例如 domain2.comdomain3.com。例如,当访问 domain2.com 时,浏览器中的 URL 仍然是 domain2.com,但我希望它是我的主域。

因此,我想将请求重定向到除 domain1.com 到 domain1.com 之外的所有其他域。如何使用 RewriteEngine 做到这一点?

我正在尝试这个:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www.)?domain1.com$ [NC]
RewriteRule .* http://www.domain1.com/$1 [L,NC]

它工作正常,除了我希望 domain2.com/folder 重定向到 domain1.com/folder

【问题讨论】:

  • 只需阅读关于重写模块的精美手册,里面都有解释!为此使用RewriteCond 规则。 httpd.apache.org/docs/current/mod/mod_rewrite.html
  • 是的,但我不确定如何编写符合我要求的 RewriteCond。
  • 我真的不明白问题出在哪里...好吧,我建议您到目前为止发布您的 attemts。
  • 我只是意识到你甚至不需要这样的规则,因为无论如何不同的(虚拟)主机都需要不同的重定向规则。所以你不需要例外......
  • 所有域都在同一个虚拟主机中。这就是为什么我需要重写。请看我上面的例子。

标签: mod-rewrite


【解决方案1】:

好的,如果您的设置工作正常,除了在重写过程中忽略 url 路径的问题,那么我建议您按照规则中的要求添加括号:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www.)?domain1.com$ [NC]
RewriteRule (.*) http://www.domain1.com/$1 [L,NC]

如果你想调试重写的东西,一个好的做法是使用日志记录。这样,您就可以逐步准确地了解重写引擎内部实际发生的情况。您需要两个命令RewriteLogRewriteLogLevel,这在文档中也有深入解释。

【讨论】:

    猜你喜欢
    • 2012-06-19
    • 2017-08-20
    • 1970-01-01
    • 2023-01-08
    • 2019-07-13
    • 2016-11-12
    • 1970-01-01
    • 2013-04-28
    • 1970-01-01
    相关资源
    最近更新 更多