在URL中不要使用http://foo.com/path
,而是使用//foo.com/path
(甚至更好的方法是,如果你在同一台服务器上,请使用/path
- 这肯定有效)。使用完整的URL会带来冗余和脆弱性。尽量避免。
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.yourdomain.com/$1 [R,L]
这将把任何网页发送到https。
了解HTTP严格传输安全(HSTS):https://www.owasp.org/index.php/HTTP_Strict_Transport_Security
基本上,您可以通过将此标头添加到安全站点的配置中来强制浏览器(除非是IE<12)始终使用HTTPS:
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"
这也可以与301(永久)重定向结合使用,用于非安全/HTTP站点的配置,也可以在上述引用站点中outlined。
此外/或者,您可以通过在<head>
标记顶部添加类似以下内容来设置"website.com"页面的base href:
<base href="https://website.com/">
这将设置页面上所有相对URL(包括链接、样式表、脚本、图像等)以HTTPS站点的根目录作为它们的基础。但是,根据您的网站结构和大小,您需要验证每个页面的基本href和/或页面内的URL是否包含任何必要的路径信息(即子目录)。否则,指向“otherpage.html”的http://website.com/some/directory/page.html链接将指向http://website.com/otherpage.html而不是http://website.com/some/directory/otherpage.html。在这种情况下,您需要一个基本href为“http://website.com/some/directory/”或链接中的相对URL应该指向“/some/directory/page.html”或“some/directory/page.html”(在这种情况下不需要斜杠)。
href="page3.php"
将使用您当前所在的协议 - 这可能是 .htaccess 的问题吗? - Prisoner