.htaccess - 在所有流量和所有页面上强制使用 HTTPS

标签 .htaccess codeigniter redirect mod-rewrite https

我有一个在普通 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/

相关文章:

.htaccess - 将目录重定向到子域

JavaScript 重定向错误

javascript - json代码中的重定向

php - 使用 codeigniter 更新

php - 不需要从php代码中向mysql中的int数据类型添加0

php - CodeIgniter:如何将 $this->db->insert_id() 值传递给 Controller 以便插入到另一个表中?

php - 服务器为肯定存在于正确目录中的资源提供 410 错误

apache - 根据url和referrer删除cookie

linux - Apache 将所有 https (443) 请求重定向到外部服务器

.htaccess - htaccess 文件中使用通配符的 301 重定向不起作用