如果没有HTTP或HTTP的前面,Apache站点不会加载



当我不包括http://或https://前缀时,我的网站不加载。

例如,这些不会加载: example.comwww.example.com

但这确实如此: https://example.comhttp://example.comhttp://www.example.comhttps://www.example.com

我正在使用Apache作为我的Web服务器,这是我的网站可用的conf:

<VirtualHost *:80>
        ServerAdmin
        DocumentRoot /var/www/html
        ServerName example.com
        ServerAlias www.example.com
        <Directory /var/www/html/>
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
        </Directory>
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        <IfModule mod_dir.c>
            DirectoryIndex index.php index.pl index.cgi index.html index.xhtml index.htm
        </IfModule>
RewriteEngine on
RewriteCond %{SERVER_NAME} =example.com [OR]
RewriteCond %{SERVER_NAME} =www.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

我确实有一个由Certbot生成的SSL证书。

关于为什么会发生这种情况的任何想法?

预先感谢

您可以尝试此

<VirtualHost *:80>
    ServerAdmin
    DocumentRoot /var/www/html
    ServerName example.com
    ServerAlias www.example.com
    <Directory /var/www/html/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    <IfModule mod_dir.c>
        DirectoryIndex index.php index.pl index.cgi index.html index.xhtml index.htm
    </IfModule>
    RewriteEngine On
    RewriteCond %{HTTPS} off [OR]
    RewriteCond %{HTTP_HOST} ^www. [NC]
    RewriteRule ^ https://{SERVER_NAME}%{REQUEST_URI} [L,NE,R=301]

最新更新