我有一个网站,其中只有 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://
访问您的网站。