【问题标题】:htaccess https to https subfolderhtaccess https 到 https 子文件夹
【发布时间】:2016-05-18 20:28:29
【问题描述】:

我正在创建一个拼图/挑战网站,它需要两组不同的服务文件,具体取决于用户输入的是 http: 还是 https:

我似乎无法使用我的网络主机将所有 HTTPS 流量重定向到子文件夹,所以我一直在尝试编辑 htaccess 文件,但我一直以无限重定向结束。

我正在尝试做的事情:

http://www.example.com/secure   ->   http://www.example.com 
https://www.example.com         ->   https://www.example.com/secure 

当我设置重定向时,在 chrome 超时后,我得到 https://www.example.com/secure/secure/secure/secure/secure/secure/secure ...

我设置的重定向是:

RewriteEngine On 
RewriteCond %{HTTPS} on 
RewriteRule .* https://www.example.com/secure [NC,L,R=301]

RewriteCond %{HTTPS} off
RewriteRule ^secure/ http://www.example.com/ [NC,L,R=301]

这两条规则似乎都不起作用,但第一条规则似乎永远循环。谁能解释我做错了什么?

【问题讨论】:

  • 您真的想重定向用户还是只想提供两组不同的文件?
  • 理想情况下,我会为来自同一主机的两个完全不同的站点提供服务。不幸的是,我没有任何能力编辑 apache 配置。该网站是一个谜题的一部分,其中 https 和 http 应该表现不同。 (编辑是因为在完成之前不小心按了 Enter)

标签: apache .htaccess redirect https


【解决方案1】:

RewriteCond %{HTTPS} on 部分可能不适用于所有 Web 服务器。一些服务器正在使用RewriteCond %{HTTP:X-Forwarded-Proto} https

我认为你应该这样做:

RewriteEngine On 
RewriteCond %{HTTPS} on [OR] 
RewriteCond %{HTTP:X-Forwarded-Proto} https
RewriteCond %{REQUEST_URI} !^/secure
RewriteRule ^(.*)$ https://www.example.com/secure [NC,L,R=301]

RewriteCond %{HTTPS} off [OR] 
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{REQUEST_URI} ^/secure
RewriteRule ^(.*)$ http://www.example.com/ [NC,L,R=301]

【讨论】:

  • 遗憾的是这不起作用,它将所有 https 流量定向到 http。
  • 在玩了一段时间后,我可以通过将第二组中的 !https 更改为 http 并在 https 离线上方添加 RewriteEngine On 来使其工作。如果您进行这些更改,我会将其标记为已解决。 ---- 谢谢 :)
猜你喜欢
  • 2016-04-23
  • 2011-06-13
  • 1970-01-01
  • 1970-01-01
  • 2020-07-23
  • 1970-01-01
  • 2019-08-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多