我有一台服务器使用apache2将所有HTTP请求重定向到HTTPS:
<VirtualHost *:80>
ServerName www.mydomain.com.au
RedirectMatch permanent ^/?(.*) https://www.mydomain.com.au/$1
</VirtualHost>
<VirtualHost *:80>
ServerName mydomain.com.au
RedirectMatch permanent ^/?(.*) https://www.mydomain.com.au/$1
</VirtualHost>
它与www域完美配合,但每当我尝试访问'裸'域时,我都会收到错误:
Not Found
The requested URL / was not found on this server.
最令人困惑的是HTTPS版本有效:
<VirtualHost *:443>
ServerName mydomain.com.au
RedirectMatch permanent ^/?(.*) https://www.mydomain.com.au/$1
#...
</VirtualHost>
例如,如果我尝试获取https://mydomain.com.au/contact,则会正确地重定向到https://www.mydomain.com.au/contact。但是,如果我使用HTTP做同样的事情,它将失败。为什么呢?
答案 0 :(得分:1)
VirtualHost *:80
你不应该有2个条目你可以ServerAlias
使用www
并且只有一个条目:
<VirtualHost *:80>
ServerName mydomain.com.au
ServerAlias www.mydomain.com.au
RedirectMatch permanent ^/?(.*) https://www.mydomain.com.au/$1
</VirtualHost>
ServerAlias
声明可用于与ServerName
中的同一网站寻址的替代名称。
答案 1 :(得分:0)
事实证明问题是我的VirtualHost设置被覆盖在sites-available / 000-default.conf中。我改变了其中有anubhava建议的配置,它工作正常。