如何编写 Apache Rewrite 规则以将对目录的请求重定向到 SSL?

如何编写 Apache Rewrite 规则以将对目录的请求重定向到 SSL?

我正在尝试将服务器上某个目录内的所有请求重定向到 https。我已在单独的配置(在 config.d 目录中)和 .htaccess 文件中尝试了以下操作。两者都不起作用,但没有导致错误。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

当我在配置文件中尝试时,上述内容位于一个块内。

编辑
以下是我的配置文件中的代码:

<Directory "/var/www/html/ssl_dir/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride All
    <RequireAny>
        Require ip xx.xx.xx.0/24
        Require ip ::1
    </RequireAny>
    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{HTTPS} !=on
        RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    </IfModule>  
</Directory>

答案1

差不多了!

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

https://stackoverflow.com/questions/3307025/force-https-on-certain-urls-and-force-http-for-all-others

我的第一个答案错误地使用了 SERVER_NAME,它不一定等于 HTTP_HOST。服务器名称可以是任何名称,并且与用于访问它的域名有很大不同。

相关内容