如何使用 .htaccess RewriteCond 指定多个安全网页

如何使用 .htaccess RewriteCond 指定多个安全网页

我有 3 个页面需要使用 .htaccess 来确保我的网站安全

-login.php
-checkout.php
-account.php

我知道如何使用 .htaccess 一次只创建一个工作页面

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} /login.php
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L]

我试图弄清楚如何包含其他 2 个特定页面,以使它们也安全,并使用了下面的表达式,但没有奏效

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} /login.php
RewriteCond %{REQUEST_URI} /checkout.php
RewriteCond %{REQUEST_URI} /account.php
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L]

有人能帮我找到适用于多页的正确表达方式吗?

代码的第二部分是,如果 https 已经打开并且用户移动到的页面不是我指定的任何页面,我希望它应该返回到 http。如果它不是上述任何页面,我应该如何编写语句使其重定向回 http?

我有这样的声明但它不起作用

RewriteCond %{HTTPS} on 
RewriteRule !(checkout|login|account|payment)\.php http://%{HTTP_HOST}%{REQUEST_URI} [L,R]

有什么想法吗?

答案1

尝试:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (login|checkout|account)\.php https://%{HTTP_HOST}%{REQUEST_URI} [L]

条件在逻辑上因此,除非 URI 包含所有 3 个匹配项(例如/something/login.php/account.php/path/checkout.php:) ,否则规则集将不起作用

相关内容