mod_rewrite 除少数 URL 外的所有 URL

mod_rewrite 除少数 URL 外的所有 URL

我有一个网站,其中只有 3 个 URL 需要通过 HTTPS 访问。因此,我设置了 2 个 VirtualHost 部分,一个用于 HTTP(端口 80),另一个用于 HTTPS(端口 443)。

从 HTTP 重定向到 HTTPS 很容易,我基本上在 HTTP 部分中有这个:

RewriteEngine on
RewriteRule ^/wp-admin/(.*)$ https://%{SERVER_NAME}/wp-admin/$1 [R=permanent,L]
RewriteRule ^/wp-login.php$ https://%{SERVER_NAME}/wp-login.php [R=permanent,L]
RewriteRule ^/wp-register.php$ https://%{SERVER_NAME}/wp-register.php [R=permanent,L]

因此,每当用户想要登录或注册时,他都会被重定向到一个安全站点。但是,一旦用户登录,我不希望他停留在 HTTPS 上。显然,我可以更改 WP 代码以重定向回 HTTP,但不幸的是这不是一个选项。

所以问题是,如何在HTTPS中定义RewriteRules,以便只有当它们不是以下URL时,所有请求才会重定向到HTTP:

/wp-admin/(.*)$
/wp-login.php$
/wp-register.php$

我希望这是有道理的...

答案1

您可以轻松地%{REQUEST_URI}检查重写条件。您还可以检查%{HTTPS}客户端是否使用http://https://访问您的网站。

相关内容