【问题标题】:Why does this cause my site to redirect to secure.secure.*root domain*.com?为什么这会导致我的网站重定向到 secure.secure.*root domain*.com?
【发布时间】:2011-10-16 22:42:03
【问题描述】:

这是我正在使用的重写规则:

RewriteCond %{SERVER_PORT} ^443$
RewriteCond %{HTTP_HOST} !^(www.)secure.\ [NC]
RewriteRule (.*) https://secure.%{HTTP_HOST}%{REQUEST_URI} [R,L]

如果端口是 443(SSL 端口)并且请求的域不以 secure 或 www.secure 开头,则应该应用此规则。

相反,它会重定向到 secure.secure,然后返回 404 错误。或者,如果我从创建重写规则中删除安全

RewriteCond %{SERVER_PORT} ^443$
RewriteCond %{HTTP_HOST} !^(www.)secure.\ [NC]
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

我收到了太多重定向错误。

我承认,我不是 mod_rewrite 专家,但我认为自己能够通过参考文档来发挥作用。然而,在这一点上,我很难过。谢谢!

【问题讨论】:

  • 乔希,欢迎来到 SO。如果你在这里没有得到好的答案,你可以试试 serverfault.com。
  • 好的,谢谢。但是,我有信心破坏堆栈!

标签: apache mod-rewrite redirect ssl subdomain


【解决方案1】:

分组(www.) 不是有条件的。这应该类似于(www.)?http://httpd.apache.org/docs/current/rewrite/intro.html 获取更广泛的文档。

【讨论】:

  • 所以应该是:RewriteCond %{HTTP_HOST} !^(www.)?secure.\ [NC]
  • 很遗憾,这并没有解决问题,尽管我会投票赞成,因为你发现了一个语法错误。
  • 嗯,让我们看看。我想到的其他事情:您可以使用 HTTPS var (RewriteCond %{HTTPS} on) 而不是端口。同样在 HTTP_HOST 规则中,我没有转义点,因此我会想象这样的事情:RewriteCond %{HTTP_HOST} !^(www\.)?secure\. [NC]。我看不到除此之外的任何东西,所以我希望这会有所帮助。
  • 我最终放弃了动态指定子域的想法,而是明确地写了整件事:RewriteCond %{SERVER_PORT} ^443$ RewriteCond %{HTTP_HOST} !^secure.mysite.com$ [NC] RewriteRule (.*) https://secure.%{HTTP_HOST}%{REQUEST_URI} [R,L]
猜你喜欢
  • 1970-01-01
  • 2014-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多