HTTPS 重定向仅适用于基本/根 URL

HTTPS 重定向仅适用于基本/根 URL

我为我的虚拟主机进行了以下设置:

<VirtualHost *:80>
    ServerName www.example.com
    ServerAlias example.com
    DocumentRoot /var/www/example.com
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    RewriteEngine On
    RewriteCond %{HTTPS} Off
    RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</VirtualHost>

http://www.example.com如果我访问或 ,则此方法可正常工作http://example.com。但是,如果我访问特定的 URL(例如),http://www.example.com/docs/它不会重定向到 HTTPS,并将保持非安全连接。为什么会发生这种情况?

答案1

而不是试图解决什么是错的,RewriteRule这是一个典型的何时不使用 mod_rewrite

要将 http URL 重定向到 https,请执行以下操作:

<VirtualHost *:80>
    ServerName www.example.com 
    Redirect "/" "https://www.example.com/"   
</VirtualHost>

只需添加ServerAlias。最好重定向到典范姓名。

相关内容