对于 apache 来说,这是一个全新的版本,在本例中使用 2.4,尝试使重定向规则发挥作用,以便将端口 80 上的所有内容重定向到 443,某些路由除外。
这条规则不断重定向所有内容,甚至是我指定的路径。
<VirtualHost *:80>
ServerName some-name
ServerAdmin some-name
UseCanonicalName on
RewriteEngine On
RewriteCond "%{REQUEST_URI}" "! /server-status/*"
RewriteCond %{SERVER_PORT} !443
RewriteRule ^(.*)$ https://some-name$1 [R]
</VirtualHost>
答案1
您需要修改 RewriteCond,因为 REQUEST_URI 包含斜杠后面的所有内容。
例子:
http://www.example.com/server-status/
REQUEST_URI = /server-status/
平均值^
定义模式必须从新行的开头开始并.*
找到任何字符序列。
<VirtualHost *:80>
ServerName some-name
ServerAdmin some-name
UseCanonicalName on
RewriteEngine On
# Modify this line
RewriteCond "%{REQUEST_URI}" "!^/server-status/.*"
# You can remove this line
# RewriteCond %{SERVER_PORT} !443
RewriteRule ^(.*)$ https://some-name$1 [R]
</VirtualHost>