【问题标题】:Redirect from non-www to www on Heroku with PHP使用 PHP 在 Heroku 上从非 www 重定向到 www
【发布时间】:2012-11-23 19:12:55
【问题描述】:

我在 Heroku 上有一个普通的 php 应用程序,根据他们的建议,我的自定义域的 DNS 指向“www.biglikeco.com”。输入“biglikeco.com”并没有指向任何地方。

在 Heroku 上的 php 应用程序上下文中,将所有访问“biglikeco.com”的流量重定向到“www.biglikeco.com”的最佳方式是什么?

谢谢。

【问题讨论】:

  • 你在使用任何框架吗?
  • 首先,如果你想做重定向,你需要有biglikeco.com的DNS,否则你将无法接收到重写它的请求。
  • @MikeBrant,我在半夜搞砸了几件事,但最终让网站关闭了一段时间——我相信你可以想象“试错”的难度DNS TTL 等。你能指出我在 DNS 中放置什么记录的正确方向吗?我试过 CNAME 'biglikeco.com' => 'www.biglikeco.com',还有 CNAME 'biglikeco.com' => 'myherokuapp.herokuapp.com'。谢谢
  • @MikeBrant 也有 SSL 端点,这会导致问题...我认为解决方案可能是 1 部分 DNS 记录 1 部分 .htaccess?

标签: php redirect heroku dns cname


【解决方案1】:

这是我为您创建的通用 PHP 重定向脚本,您可以将其附加到您拥有的任何全局包含文件中:

$host = $_SERVER['HTTP_HOST'];
if (!preg_match('/^www\..*/', $host)) {
    header('location: http://www.my_site.com');
}

或使用 .htaccess:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^my_site\.com [NC]
RewriteRule (.*) http://www.my_site.com/$1 [L,QSA,R=301]

【讨论】:

  • 感谢您的帮助 - 问题包括通过 DNS 正确发送所有 'biglikeco.com' 流量的问题(与 Heroku 无法正确消化我的 SSL [其中显示 'www.biglikeco',和'biglikeco.com'])。我猜该解决方案将包括 1 部分 DNS 记录和另一部分 .htaccess?
  • 不确定。你可以在 Heroku 上使用 .htaccess 吗?
  • 是的,如果相关的话,你可以和 php.ini...?
  • 好的,为你添加了 .htaccess 信息
  • 非常感谢。关于通过 dns 将流量路由到那里的任何想法?我试过 CNAME 'biglikeco.com' => 'www.biglikeco.com',还有 CNAME 'biglikeco.com' => 'myherokuapp.herokuapp.com'。另外,启用 SSL 端点...