我尝试检查访问的地址在访问某个页面时是否使用安全连接。如果没有,我想将流量重定向到正确的 https:// 地址。
我尝试在 .htaccess 文件中以多种方式执行此操作。
我可以重写http://foosite.com/contact.shtml
并http://www.foosite.com/contact.shtml
解决如下https://www.foosite.com/contact.shtml
问题:
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} (contact.*)
RewriteRule (.*) https ://www.foosite.com%{REQUEST_URI}
...但这只会重写 URL,而不会重新加载页面,因此没有加密,并且地址栏中的 HTTPS 旁边有一个警告/警告标志(应该有)。
我需要重新加载该页面以便强制加密。
根据我所看到的情况,我的想法是:
RedirectCond %{HTTPS} off
RedirectCond %{REQUEST_URI} (contact.*)
Redirect 301 https ://www.foosite.com/contact.shtml
...但这完全是基于在看了这里的一些帖子并想象什么可能有效之后的推测。无论如何,推测不是一件值得依赖的好东西。我甚至不知道是否有标签RedirectCond
。
因此,由于我对 .htaccess 完全不熟悉,只是想保护单个表单,当页面未安全加载时,如何将页面重定向到它的 HTTPS 地址?
答案1
以下是我使用“.htaccess”文件将 HTTP 重定向到 HTTPS 的方法:
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]