apache 重定向除某些路径之外的所有内容

apache 重定向除某些路径之外的所有内容

对于 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>

相关内容