Apache永久重定向会自动转到www

时间:2017-10-18 14:22:31

标签: apache redirect

我的域名是没有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/

1 个答案:

答案 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