【问题标题】: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 行没有重复两次。如果该行已经存在,只需复制没有它的其余代码即可。

      【讨论】:

        猜你喜欢
        • 2013-11-12
        • 2013-01-22
        • 1970-01-01
        • 2023-03-13
        • 2020-07-03
        • 1970-01-01
        • 2014-01-22
        • 2014-05-02
        • 1970-01-01
        相关资源
        最近更新 更多