我有一个在普通 http 上开发和测试的 Codeigniter 应用程序。我们最近转移到 SSL 证书,网站的所有页面都没有在 .htaccess 中正确重定向。它只为首页完成 http://grdagrd.com/ .但它不适用于其他页面:Sonbol Roud dam
如何在所有流量和所有页面上强制使用 HTTPS 以获取基本 url https://grdagrd.com/ ?
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^([\s\S]*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
最佳答案
您的想法对于解决问题是正确的,但正则表达式不正确。我们不需要匹配这里的所有内容,因为我们需要将整个 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>
关于.htaccess - 在所有流量和所有页面上强制使用 HTTPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65248445/