我的域名是没有www的example.com。因此,如果我放入www.example.com然后它不起作用,但是example.com有效。所以我像这样配置了apache
<VirtualHost *:80>
ServerName example.com
ServerAdmin webmaster@example.com
Redirect permanent / https://example.com/
</VirtualHost>
<VirtualHost *:443>
ServerName example.com
ServerAdmin webmaster@example.com
DocumentRoot path/to/project/public
SSLEngine on
SSLCertificateFile /path/to/keys/xxx.crt
SSLCertificateKeyFile /path/to/keys/xxx.key
ErrorLog /var/log/apache2/error_log
CustomLog /var/log/apache2/access_log combined
<Directory "path/to/project/public">
Options FollowSymLinks
Require all granted
</Directory>
</VirtualHost>
现在,正如您所看到的,我会对https进行永久重定向,例如
Redirect permanent / https://example.com/
但是这个重定向默认情况下用域名添加www。因此重定向的网址变为https://www.example.com/
。显然我的网站无法通过www访问,因为它是在没有www的情况下注册的。因此,请告诉我如何使重定向工作,并在没有https的情况下转到https://example.com/
。
答案 0 :(得分:0)
添加别名
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
</VirtualHost>
这要求www.yourdomain.com指向与yourdomain.com相同的位置。但是www可能不适用于您的SSL证书,它取决于证书的特殊性。
我通常在我的网站上同时允许这两个人,因为有些人在他们输入地址时坚持要包含www。
Apache的文档可以提供更多细节https://httpd.apache.org/docs/2.2/vhosts/name-based.html
就您所拥有的重定向问题而言:
确保您没有一些RewriteEngine规则将您的非www请求重写为www。您的站点目录中可能有一个.htaccess
文件正在进行重写/重定向。
它可能看起来像:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://www.%{SERVER_NAME}/$1 [R,L]
这意味着您应该删除上一次重写规则中的www