【问题标题】:Remove WWW prefix from your website从您的网站中删除 WWW 前缀
【发布时间】:2010-10-22 06:53:39
【问题描述】:

当作为 URL 的一部分输入时,Stack Overflow(和其他网站)如何删除“www”前缀?

完全是重定向、重写还是其他?

更新:我特别想了解 IIS 6 的上下文

【问题讨论】:

  • 真的会帮助您获得有用的答案以了解您想了解的服务器。
  • 哎呀,好点子,我已经添加了,谢谢。
  • 请务必注意,如果您不使用 www(或其他子域),那么所有 cookie 都将提交到每个子域,并且您将无法拥有无 cookie用于提供静态内容的子域,从而减少了浏览器和服务器之间来回发送的数据量。你以后可能会后悔的事情。 twitter.com/codinghorror/statuses/1637428313

标签: url web


【解决方案1】:

在 Apache 上,它看起来像这样(在 .htaccess 文件中):

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

【讨论】:

    【解决方案2】:

    一个简单的方法是使用 Apache 的“重定向”指令:

    <VirtualHost *:80>
        ServerName www.example.com
        Redirect permanent / http://example.com/
    </VirtualHost>
    
    <VirtualHost *:80>
        ServerName example.com
        # remainder of server configuration goes here
    </VirtualHost>
    

    重定向指令会自动保留 URL 中 / 之后的任何内容。我发现这种方法比 Rewrite 方法更容易阅读和理解。

    【讨论】:

    • 谢谢。与重写方法相比,这非常干净,并且效果很好。
    【解决方案3】:

    启动Fiddler,我们可以看到服务器以“301 Moved Permanently”状态响应并将其引用到http://stackoverflow.com。 由于 StackOverflow 托管在 Windows 2k8 IIS7 上,因此他们立即在 IIS7 中设置了此重定向。

    仅供参考:

    a list of HTTP statuses

    如果您是 .NET 开发人员,您可能知道 "Respose.Redirect" ,这会创建 302 Object Moved 状态。在这种情况下,搜索引擎更喜欢 301 状态代码,因为他们知道他们将来不应该回到 www.stackoverflow.com。

    【讨论】:

      【解决方案4】:

      您可以通过多种方式进行操作,使用 mod_rewrite 和重定向是我的最爱。像这样的:

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

      【讨论】:

        【解决方案5】:

        重定向。子域“www.stackoverflow.com”将简单地重定向到“stackoverflow.com”。

        【讨论】:

        • 鉴于我们在这里讨论的是 SO,一个在 IIS 上运行的 MVC 应用程序,我想说的很可能是程序化重定向。下一个 DNS。如果您对 IIS 感兴趣,则 Apache 脚本不适用。
        【解决方案6】:

        您需要添加一个指向您的网络服务器的默认 dns 条目。

        ping site.com 并验证 ip 是否指向网络服务器,如果不是,则需要添加默认 DNS 条目。

        基本设置:

        您必须添加主机标头http://www.visualwin.com/host-header/

        使用 www.site.com 的主机标头创建 1 个站点

        在主目录选项卡中,将其设置为永久重定向到http://site.com

        使用 site.com 的主机标头创建第二个站点

        如果您希望 www.site.com/file.html 重定向到 site.com/file.html,您将需要更高级的设置,例如 ISAPI_Rewrite 或使用自定义 404 页面来执行此操作。

        【讨论】:

          【解决方案7】:

          这是很久以前的事了,但据我所知,这是一个 DNS 设置。我认为您不需要指定主机地址(WWW 是该站点所在的主机(或计算机/集群...)的名称。)。

          我认为您可以将其设置为将所有请求发送到默认主机。

          不能 100% 确定,但请检查 DNS 的可能性。

          希望能帮助或至少让你朝着正确的方向前进。

          【讨论】:

            【解决方案8】:

            您可以像 mod_rewrite 为 Apache 所做的那样,为 IIS 使用类似的 URL 重写器。一个好的是IIRF。规则是:

            RewriteCond  %{HTTP_HOST}  ^www\.example\.com$     [I]
            RedirectRule ^(.*)$        http://example.com/$1   [R=301]
            

            您也可以像这样通配主机名:

            RewriteCond  %{HTTP_HOST}  ^(.+)\.example\.com$    [I]
            RedirectRule ^(.*)$        http://example.com/$1   [R=301]
            

            IIRF 可免费使用。

            【讨论】:

              【解决方案9】:

              对于阿帕奇

              <VirtualHost *:80>
              ServerName yourdomain.tld
              ServerAlias www.yourdomain.tld
              

              【讨论】:

              • 欢迎来到 Stack Overflow!请考虑为您的答案添加一些解释,而不仅仅是代码。
              猜你喜欢
              • 1970-01-01
              • 2015-04-30
              • 1970-01-01
              • 2015-12-30
              • 1970-01-01
              • 1970-01-01
              • 2013-05-16
              • 2014-06-25
              相关资源
              最近更新 更多