我正在尝试将服务器上某个目录内的所有请求重定向到 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]
我的第一个答案错误地使用了 SERVER_NAME,它不一定等于 HTTP_HOST。服务器名称可以是任何名称,并且与用于访问它的域名有很大不同。