【问题标题】:htaccess redirect loops different local to productionhtaccess 重定向循环不同的本地生产
【发布时间】:2017-05-04 17:35:33
【问题描述】:

我对 htaccess https 重定向有一个奇怪的问题。

我有我的本地版本和生产版本。

现在我有 2 个版本的 htaccess,每个版本在一个环境中运行良好,并在另一个环境中创建重定向循环。

这个在生产上效果很好:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} https
RewriteRule (.*) - [L]
RewriteRule (.*) https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

这个在本地效果很好

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

任何想法是什么问题?

谢谢!

【问题讨论】:

  • 您的生产 Apache 似乎在代理后面。
  • @anubhava 是的,关于如何制作正确的单个 htaccess 文件有什么想法吗?
  • 您是否在开发和生产中使用 Apache 2.4?
  • 生产 2.4.7,本地 2.4.10 .

标签: php apache .htaccess redirect mod-rewrite


【解决方案1】:

这种使用REQUEST_SCHEME 变量的条件应该适用于Apache 2.4+

RewriteEngine On

RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteCond %{REQUEST_SCHEME} =http
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

确保在测试此更改之前清除浏览器缓存。

【讨论】:

  • 这会导致生产服务器上的重定向,现在我知道它不在代理下。它是一个简单的服务器。此代码在本地运行良好,但会在生产服务器上产生重定向循环
  • 太棒了!如果您能详细说明条件,那就太好了!谢谢。
  • 有 2 个条件:第一个用于您在生产中的代理设置,第二个用于您在开发中的标准 apache 设置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-17
  • 1970-01-01
  • 1970-01-01
  • 2017-10-10
  • 1970-01-01
相关资源
最近更新 更多