我目前在 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>