【问题标题】:Forcing HTTPS on All Traffic and All Pages在所有流量和所有页面上强制使用 HTTPS
【发布时间】:2021-03-22 16:44:37
【问题描述】:
我有一个在普通 http 上开发和测试的 Codeigniter 应用程序。我们最近转移到 SSL 证书,并且网站的所有页面都没有在 .htaccess 中正确重定向。它仅针对首页 http://grdagrd.com/ 完成。但它不适用于其他页面:Sonbol Roud dam
如何对基本 url https://grdagrd.com/ 的所有流量和所有页面强制使用 HTTPS?
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^([\s\S]*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
【问题讨论】:
标签:
.htaccess
codeigniter
redirect
mod-rewrite
https
【解决方案1】:
您解决问题的想法是正确的,但正则表达式不正确。我们不需要在这里匹配所有内容,因为整个 URL 本身我们需要更改为 https 因此 .* 将在重写规则时工作。如果您也有任何其他规则,请尝试遵循这些规则,然后将这些规则保留在 .htaccess 文件的第一个/开始处。如果RewriteCond %{HTTPS} !on 不起作用,则将其更改为RewriteCond %{HTTPS} off。请确保在测试 URL 之前清除浏览器的缓存。
RewriteEngine ON
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L]
使用 OP 显示的 .htaccess 可能如下所示,它是 OP 问题 + 我的规则组合的简单复制/粘贴,因为我不确定 OP 到底在处理其他规则是什么(此外,这不在问题)。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\s\S]*)$ /index.php [L,B,QSA]
</IfModule>
【解决方案2】:
安装 SSL 证书后,您的网站可通过 HTTP 和 HTTPS 访问。但是,最好只使用后者,因为它会加密和保护您网站的数据。
您可以在此处查看完整教程
https://tutsfx.com/force-https-traffic-using-htaccess/
对所有流量强制使用 HTTPS
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
重要提示:确保 RewriteEngine On 行没有重复两次。如果该行已经存在,只需复制没有它的其余代码即可。