【问题标题】:WWW and non-WWW URL. Two different sitesWWW 和非 WWW URL。两个不同的站点
【发布时间】:2011-07-02 00:05:32
【问题描述】:

我今天刚刚注意到我正在创建的网站存在 WWW 或非 WWW 问题。如果你访问 http://www.taskconductor.com,它是一个不同的页面,内容与 http://taskconductor.com 相同。

如果您要在 http://www.taskconductor.com 登录(用户名:show@412customs.com,通过:tester),然后尝试访问 http://taskconductor.com(没有 WWW),它会让你再次登录。然后如您所见,当您检查 cookie 时,您可以看到有两组 cookie。一种用于 http://taskconductor.com,另一种用于 http://www.taskconductor.com。

我发现这是个问题,但我需要重定向吗?如果是这样,它必须是 index.php 吗?我真的希望我的所有主要内容都放在 index.php 上。

我该如何解决这个问题?

【问题讨论】:

  • 你运行的是什么网络服务器?
  • 您可能必须正确设置 DNS 记录。
  • 这是一个很好的问题,迈克,我托管在 1and1.com 的 Linux 服务器上,我将不得不致电并找出他们正在使用的服务器。我想我对网络的那部分了解不够!我会打电话查清楚
  • 顺便说一句,许多托管公司会让您通过 Web 控制面板将 www 或普通域设置为规范域(并让另一个重定向)。我不知道 1and1,但这是一个很常见的设置。

标签: html redirect


【解决方案1】:

你知道你使用的是什么网络服务器吗?如果您使用的是 apache,则可以在 .htaccess 文件中重写 URL。这将允许您将所有流量集中到您的非 www 域。我做了一个快速的谷歌并找到了这个示例代码:

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

来源:http://yoast.com/how-to-remove-www-from-your-url-with-mod_rewrite/

【讨论】:

  • 几乎完全符合我的建议。搜索引擎也会将 www 和非 www 视为单独的站点,因此您应该始终选择包含或排除 www,就像上面的 htaccess 示例一样。
  • 我在搜索这些东西时确实看到了相同的代码。我不明白这一切在说什么,但我正在工作中。我将尝试编辑 htaccess 并让您知道它是如何进行的。谢谢!
  • 对于这个问题,这是一个糟糕的解决方法,任何将 www 子域视为不同站点的搜索引擎实际上都不值得使用。试试谷歌 ;)
  • 我只是更改了 htaccess 文件以使用上面的代码,但无济于事。在这一点上,我不太关心谷歌的搜索,我只关心是否有人想输入完整的 URL...
  • @Richard - 想解释一下为什么这是一个不好的解决方法?几乎所有主要网站都强制使用 www 或非 www。也许不是为了这个目的,但无论如何,它很常见。建议使用真正的搜索引擎是可笑的,所有开发人员都希望我们可以将好的搜索引擎强加给用户,但显然它超出了我们的控制范围,对这样的网站并没有真正的帮助。我在这里不一定是个混蛋。我真的很想知道是否有理由不通过 h​​taccess 执行此操作。
【解决方案2】:

我能够将我的 php "setcookies" 设置为具有指定的域。

我原来的 setcookie 字符串是:setcookie('ver_ame', $email, time()+2592000);

这只允许在它所在的任何类型的页面上设置 cookie。如果它在 http://taskconductor.com 上,它会为此设置 cookie,如果它在 http://www.taskconductor.com 上也是一样的。

如果你的 setcookie 字符串是:setcookie('ver_ame', $email, time()+2592000, "/", ".taskconductor.com");

附加的“/”表示 cookie 可以在根目录下的任何目录上工作。 “.taskconductor.com”部分将显示要使用的域。网站名称前有句点这一事实表明此 cookie 可以在任何子域或其自己的域上工作。

感谢大家的回复和帮助!现在一切正常!谢谢!

【讨论】:

    【解决方案3】:

    比使用 URL 重写更好的是设置您的 cookie 以用于子域。例如,如果您为 mydomain.com 设置 cookie,那么它对 sub.mydomain.com 不起作用。但是,如果您为 .mydomain.com 设置 cookie(注意句号),那么它将适用于 mydomain.com、sub.mydomain.com、foobar.mydomain.com 等。

    【讨论】:

    • 哇,很高兴知道!谢谢你。不过,我正在用 php 设置我的 cookie。所以我无法指定域。它只会发生在它使用的任何页面上
    • 对不起,刚刚阅读 - setcookie('ver_ame', $email, time()+2592000, "/", ".taskconductor.com");应该工作
    【解决方案4】:

    如果您将 cookie domain 明确设置为 taskconductor.com(无 www),那么 www 和裸域将使用同一组 cookie。您只需要修改您的 PHP 以指定一个 cookie 域。

    我建议您按照其他人的建议进行操作,并重定向到您想要用作规范 URL 的任何版本。跨多个(子)域重复内容是不好的做法。但是,了解您设置的 cookie 的域范围也是一个好主意。

    【讨论】:

    • 所以,我相信从“setcookie('ver_ame', $email, time()+2592000);” to "setcookie('ver_ame', $email, time()+2592000, "/", ".taskconductor.com");"应该改变问题吗?
    • 是的,应该可以解决它。 setcookie() 参考同意使用/.example.com 作为域范围cookie 的参数。请注意,这不会使为 www.example.com 设置的任何旧 cookie 在 example.com 上工作,它只会让所有 cookie 从现在开始使用 example.com 并在任何(子)域上工作。
    • 这很好,除了测试人员外,该站点尚未使用。谢谢!
    猜你喜欢
    • 2013-12-23
    • 2015-06-29
    • 2011-05-01
    • 1970-01-01
    • 2016-07-28
    • 2014-12-16
    • 2012-04-18
    • 2020-10-04
    • 2011-12-18
    相关资源
    最近更新 更多