重定向除 Apache 000-default.conf 中的一个以外的所有网址

Redirect all urls except one in Apache 000-default.conf

我需要保留一个 URL 作为 HTTP,其余所有 URL 都是 https。 我的货币 000-default.conf 配置是:

<VirtualHost *:80>
    RewriteEngine On
    RewriteCond %{HTTPS} off
    Redirect permanent / **https**://www.abc.com/
</VirtualHost>

这会将所有 URL 重定向到 https。 现在我在这个网站上有一个 URL 作为 http://www.abc.com/blog 我不希望它被重定向到 https。我怎样才能做到这一点?

您当前的食谱有点混乱。 RewriteCond 不会阻止其后的重定向,它只会影响 RewriteRule。但是您永远不会在端口 80 虚拟主机上看到 HTTPS 请求。

您可以将重定向切换为实际使用 mod_rewrite 并添加例外。条件默认为 AND 运算:

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} !=www.example.com
RewriteCond %{REQUEST_URI} !^/blog$
RewriteRule ^(/.*) https://www.example.com/ [R=301]