我正在使用下面的重写规则将 2 个 php 页面重定向到 https(以保护用户数据),但是每当我单击这些 php 页面上的任何链接时,它们都会在启用 https 的情况下重定向,并且页面无法正确显示。
底部的规则旨在将任何其他页面重定向回 http,但它们不起作用。任何建议都将不胜感激!
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^/securepage1.php$ [NC]
RewriteRule ^(.*)$ https://www.example.com$1 [L,R=301]
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^/securepage2.php$ [NC]
RewriteRule ^(.*)$ https://www.example.com$1 [L,R=301]
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^/securepage1.php$ [NC]
RewriteCond %{REQUEST_URI} !^/securepage2.php$ [NC]
RewriteRule ^(.*)$ http://www.example.com$1 [L,R=301]
答案1
尝试启用日志记录清楚了解哪些步骤失败了:
RewriteLog /path/to/log
RewriteLogLevel 2
您可以使用大于 2 的日志级别值,但请记住,这将要会影响服务器的性能,因此请谨慎在繁重的生产实例上运行此功能。
现在,谈谈一些安全问题。如果您非常担心要保护特定页面(而不是其他页面)上的数据,那么最好的问题是:是否值得只让网站上的 2 个页面值得信任?如果我导航到 并在http://example.com
中间人 (MIM) 攻击中被拦截,https://example.com/securepage1.php
当 MIM 攻击迫使我访问 时,您的用户真的关心 是否安全http://badpage.com/securepage1.php
吗?换句话说,如果这是交互式网站的一部分,保护这两个安全页面毫无意义,因为用户从一开始就无法真正信任该网站。