我有 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
:) ,否则规则集将不起作用