2

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

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

我们的场景如下:

- 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 文件中。

4

2 回答 2

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.com以开头的主机www.askia.com。第二条规则将请求重定向到www.askia.com和以外dev.askia.com的主机www.askia.com。因此,每个请求都应该转到dev.askia.comwww.askia.com

于 2009-04-28T16:09:51.647 回答
1

在 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
于 2009-05-04T12:30:03.357 回答