我一直在搜索网络,所以我无法绕过或解决这个问题。
我们有一堆子域和一些专用服务器。一台服务器作为问题跟踪和登陆页面执行双重三重任务。问题是通配符登录页面有时不会将您带到正确的虚拟主机页面。我一直在看通配符,但它们似乎特别宽泛。
我们的方案如下:
- 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文件中。
答案 0 :(得分: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.com
或www.askia.com
。
答案 1 :(得分: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