【问题标题】:Redirect dev subdomain to dev subdirectory in HSTS compatible way以兼容 HSTS 的方式将 dev 子域重定向到 dev 子目录
【发布时间】:2022-01-11 12:38:53
【问题描述】:

我正在尝试重定向

http://dev.example.comhttps://www.example/dev

在我的 htaccess 中使用此代码:

RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_HOST} ^dev.example.com
RewriteRule ^(.*)$ https://www.example.com/dev/$1 [L,NC,QSA]
RewriteCond %{HTTP_HOST} ^dev.example.com$ [NC]
RewriteRule ^((?!dev).*)$ /dev/$1 [NC,L]

一家安全评估公司抱怨以下问题:

HTTP 站点以无法使用 HTTPS 和 HSTS 标头保护的方式将用户重定向到新 URL。这使用户容易受到中间人攻击者的攻击,这些攻击者可以将他们重定向到目标网站的欺诈/欺骗版本。

我该怎么做?第一次重定向 http://dev.example.comhttps://dev.example.com 然后 https://dev.example.comhttps://www.example.com/dev?

【问题讨论】:

  • 您真的要在这个阶段实施 HSTS 吗?或者您只是想让重定向符合 HSTS 标准?确认一下,您是否要将 everythingdev.example.com 重定向到 www.example.com?只是你的指令目前没有这样做。
  • @MrWhite 我想将所有内容从 dev.example.com 重定向到 www.example.com/dev 并使其符合 HSTS。这可能吗?

标签: .htaccess subdomain subdirectory hsts


【解决方案1】:

是的,您应该首先重定向 http://dev.example.comhttps://dev.example.com 然后 https://dev.example.comhttps://www.example.com/dev 如你所说。当您实施 HSTS 时,HTTPS 重定向除了将 http 更改为 https 之外什么都不做。用于其他目的的重定向(例如将子域更改为子目录)必须在单独的重定向中完成。

您可以通过从您的第一个重写规则中删除 dev/ 并保留 dev 子域来轻松修改您的 .htaccess 规则:

RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_HOST} ^dev.example.com
RewriteRule ^(.*)$ https://dev.example.com/$1 [R=301,L,NC,QSA]
RewriteCond %{HTTP_HOST} ^dev.example.com$ [NC]
RewriteRule ^((?!dev).*)$ /dev/$1 [R=301,NC,L]

【讨论】:

  • 嗨@stephen-ostermiller。谢谢,这适用于域,但不适用于内部页面。即,当尝试将dev.example.com/page 重定向到example.com/dev/page 时,它会给出 404(直接访问时此页面加载正常)
  • 我为你修好了
  • 你测试了吗?抱歉,还是一样的 404...
  • 确保在测试之间清除浏览器缓存。或在命令行上进行测试,例如:curl --head http://dev.example.com
  • 嗨@stephen-ostermiller - 它仍然无法正常工作。还尝试从没有此域缓存的浏览器。
猜你喜欢
  • 2011-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-01
相关资源
最近更新 更多