【问题标题】:Apache Virtual Hosts and mod_rewrite conflictsApache 虚拟主机和 mod_rewrite 冲突
【发布时间】:2010-10-22 08:56:28
【问题描述】:

我一直在网上搜索,但我无法解决或解决这个问题。

我们有一堆子域和一些专用服务器。一台服务器作为问题跟踪和登录页面执行双重三重职责。问题是通配符登录页面有时无法将您带到正确的虚拟主机页面。我一直在研究通配符,但它们似乎特别宽泛。

我们的场景如下:

-www.askia.com 是主要的登陆站点。一个不存在的(通配符)子域应始终放在此处。
-dev.askia.com 是技术支持和问题网站。它有一些适用于 https 的 mod_rewrites。我花了一段时间,但我得到了它的工作,我宁愿不打破它。
-www.askia.fr 是我们的法语网站。它不会将您带到 www.askia.com,而是将您带到 dev.askia.com。
-www.askia.co.uk 应该带你到 www.askia.com 但它会转到 dev.askia.com

我不完全确定我应该在哪里尝试解决解决方案。我应该在 CNAME 中做些什么吗?在 virtualhosts 配置文件或 mod_rewrite 文件中。

【问题讨论】:

  • 在 serverfault.com 上投票赞成关闭 - 它位于灰色区域,但我认为它与系统配置和 apache 设置有关,而不是编程......

标签: mod-rewrite apache2 virtualhost


【解决方案1】:

试试这些规则:

RewriteCond %{HTTP_HOST} ^dev\.
RewriteCond %{HTTP_HOST} !^dev\.askia\.com$
RewriteRule ^ http://dev.askia.com%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTP_HOST} !^www\.askia\.com$
RewriteCond %{HTTP_HOST} !^dev\.askia\.com$
RewriteRule ^ http://www.askia.com%{REQUEST_URI} [L,R=301]

第一条规则将每个请求重定向到以dev. 开头的主机,但不是dev.askia.comwww.askia.com。第二条规则将请求重定向到www.askia.comdev.askia.com 以外的主机到www.askia.com。所以每个请求都应该发送到dev.askia.comwww.askia.com

【讨论】:

  • 谢谢,我会试一试。如果我添加其他子域,我需要将它们添加到 rewreitecond?
  • 是的。我的示例只允许dev.…www\.…。其他开头的主机名将被重定向到www.askia.com
【解决方案2】:

在 Apache 中使用虚拟主机时,列出的第一个主机将始终是不匹配的默认值。

#default vhost
# any non-matches will land here

<VirtualHost  _default_:80>
ServerName www.askia.com:80
DocumentRoot /path/to/site

ErrorLog /path/ti/sites/logs/error_log

</VirtualHost>


# vhost #2 

<VirtualHost  _dev_Site_:443>
ServerName dev.askia.com:443
DocumentRoot /path/to/dev/site

ErrorLog /path/to/dev/sites/logs/error_log

#ssl details
SSLEngine on
SSLCipherSuite HIGH:MEDIUM
SSLCertificateFile /location/securti.crt
SSLCertificateKeyFile /location/securti.key


#any rewrite rules to apply only to this (default) domain
# force SSL for instance..
RewriteRule .* - [F]
RewriteCond   %{SERVER_PORT}  !^443$
RewriteRule (.*) https://dev.askia.com/
</VirtualHost>

#etc, etc

【讨论】:

  • 那么我该如何更改这个顺序。我在 apache2.conf 中唯一拥有的是对启用站点的目录的引用。除了卸载不切实际的默认站点外,我找不到有关如何更改此顺序的任何信息。
  • joe - 无论是哪个域,首先都是您的全部。要更改它,只需先列出另一个。我编辑了我的原始帖子以包含一个示例 vhost 配置,该配置使 www 成为您的默认设置并强制开发。成为 ssl。
猜你喜欢
  • 1970-01-01
  • 2018-04-29
  • 2013-12-16
  • 2010-11-02
  • 2012-12-09
  • 2014-08-17
  • 2015-11-29
  • 2011-12-24
  • 2011-06-11
相关资源
最近更新 更多