【问题标题】:.htaccess 301 redirect not working correctly. Need to force HTTPS.htaccess 301 重定向无法正常工作。需要强制 HTTPS
【发布时间】:2015-07-02 01:19:54
【问题描述】:

我们希望强制对我们网站的所有请求都使用 HTTPS 协议。我们只是想替换 URL 的协议,URI 的其余部分可以保持不变。当我们从主页开始浏览网站时,一切正常。当我们首先打开不是主页的任何其他页面(即 ourdomain.com/this-is-a-page/)时,我们不会被重定向到使用 HTTPS。我需要对我的 htaccess 文件进行哪些更改才能完成此操作?

这有效(它插入 https):ourdomain.com

这不起作用:ourdomain.com/this-is-a-page/

谢谢!

ht访问代码:

RewriteEngine On
RewriteBase /

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

【问题讨论】:

  • 您还有其他规则或重定向吗?
  • @Gigi - 您在编写规则时是否参考了this
  • @JonLin - 是的,我还有其他规则。我编辑了上面的 htaccess 代码以包含所有规则。
  • @MikeAnthony 我确实提到过。我唯一改变的是“RewriteCond %{HTTPS}”,所以这是检查“off”而不是“!on”(不是on)。

标签: apache .htaccess mod-rewrite redirect https


【解决方案1】:

您需要将重定向规则放在您的路由规则之前。重写引擎循环,因此首先执行路由规则(将内容路由到index.php),重写引擎循环,然后应用第二个重定向规则,重定向错误的东西。试试:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

【讨论】:

  • 那行得通。我也很欣赏这个解释。我得到了答案并且我学到了一些关于如何应用 htaccess 规则的新知识。谢谢!
猜你喜欢
  • 2013-11-04
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 2020-01-16
  • 1970-01-01
  • 2015-08-09
相关资源
最近更新 更多