我如何将 http 重定向到 https?

我如何将 http 重定向到 https?

我在纯域和www子域上都安装了 SSL。它们也能正常工作。我需要将所有http协议请求重定向到https。以下是 apache 的配置:

<VirtualHost *:80>

    ServerName lamtakam.com

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/myweb

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    RewriteEngine on
    RewriteCond %{SERVER_NAME} =lamtakam.com
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

</VirtualHost>

<VirtualHost *:80>
    ServerName www.lamtakam.com
    DocumentRoot /var/www/html/myweb

RewriteEngine on
RewriteCond %{SERVER_NAME} =lamtakam.com [OR]
RewriteCond %{SERVER_NAME} =www.lamtakam.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

</VirtualHost>

<Directory /var/www/html/myweb>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>

知道如何进行重定向吗?目前,有些情况按预期工作,并且重定向会发生。唯一不会发生重定向的域是:


注意到这不起作用:(但不确定我是否将其正确放置在配置中)

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^(www\.)?lamtakam\.com$
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [END,NE,R=permanent]

答案1

这曾经有效,但是不建议甚至在 2010 年的某个时候也是如此。所以不要使用这个:

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^(www\.)?lamtakam\.com$
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [END,NE,R=permanent]

这些都会被添加到.htaccess

您应该使用这个(来自同一个链接):

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

<VirtualHost *:443>
    ServerName www.examples.com
    # ... SSL 
</VirtualHost>

相关内容