我們有一個網站,我會打電話給example.com。大多數情況下,您會看到http://www.example.com,有時我們會將您重定向到https://www.example.com。將* .example.com和example.com重定向到www.example.com的HTTPS問題
我們希望重定向到http://example.com或http://*.example.com的任何人到http://www.example.com,並且https也是如此。 (這主要是爲了避免你得到的警報,如果你去https://example.com而不是https://www.example.com)
我們的虛擬主機文件是在帖子的末尾。它可以很好地除了一個奇怪的現象:
- http://example.com - >成功重定向到http://www.example.com
- http://www.example.com - >成功不重定向
- http://foo.example.com - >成功重定向到http://www.example.com
- https://example.com - >成功重定向到https://www.example.com
- https://www.example.com - > successfu LLY不直接
- https://foo.example.com - >錯誤 - 重定向到http://www.example.com
正是這種最後的結果我無法捉摸。我已經嘗試了很多來自Google &堆棧溢出的試用和錯誤解決方案,但似乎沒有任何改變。即使我們交換配置的順序(使443在80之前),它仍然重定向https://foo.example.com到http://www.example.com
我們在Ubuntu上運行Apache/2.2.12。
這裏的配置文件:
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com *.example.com
ServerSignature On
DocumentRoot /var/www/example.com/public
RailsEnv 'production'
PassengerHighPerformance on
<Directory /var/www/example.com/public>
AllowOverride all
Options -MultiViews
</Directory>
SSLEngine Off
CustomLog /var/log/apache2/example.log combined
ErrorLog /var/log/apache2/example-error.log
# Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
LogLevel warn
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^[^\./]+\.[^\./]+$
RewriteRule ^/(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
</VirtualHost>
<VirtualHost *:443>
ServerName www.example.com
ServerAlias example.com *.acome.com
DocumentRoot /var/www/example.com/public
RailsEnv 'production'
PassengerHighPerformance on
<Directory /var/www/example.com/public>
AllowOverride all
Options -MultiViews
</Directory>
SSLCertificateFile /etc/ssl/certs/www.example.com.crt
SSLCertificateKeyFile /etc/ssl/private/example.com.private.key
SSLCACertificateFile /etc/ssl/certs/EV_intermediate.crt
SSLEngine On
CustomLog /var/log/apache2/ssl-example.log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
ErrorLog /var/log/apache2/ssl-example-error.log
# Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
LogLevel warn
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^[^\./]+\.[^\./]+$
RewriteRule ^/(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
</VirtualHost>
不太可能是問題 - 我不認爲acme.com是他的ACTUAL域名。 :) – EMP 2010-05-13 22:59:39
是的,但這很好地說明了使用假數據尋求幫助的問題。 OP沒有向我們展示*真實*問題。 – 2010-05-13 23:06:41