重定向 https 和 www

重定向 https 和 www

我目前在 post_virtualhost_2.conf 文件中有重写规则,并将其插入到 httpd.conf 文件的绝对末尾。

我有两个区块似乎不起作用

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteCond %{HTTPS} !=on
   RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
</IfModule> 
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteCond %{SERVER_ADDR} !=127.0.0.1
    RewriteCond %{SERVER_ADDR} !=::1
    RewriteRule ^ %{ENV:PROTO}://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

完整的会议是这里

我期望在所有情况下都出现以下情况

但是当我输入 privatmamtora.com 时,它只得到 200 个响应。

PS. 我希望规则能够保证子域名安全。(不要破坏子域名)

编辑

重写模块已加载。

答案1

您没有提到它适用于哪种操作系统,因此我将保持其通用性。

可能是因为 mod_rewrite 模块未启用,所以配置被忽略,因为<ifModule mod_rewrite.c>

您需要确认该模块确实已被加载。

你也不需要两套<IfModule ...>

这目前对我有用:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} !^WWW\. [NC]
RewriteCond %{SERVER_ADDR} !=127.0.0.1
RewriteCond %{SERVER_ADDR} !=::1
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

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

相关内容