有人告诉我什么时候在 Server Fault 上询问我问过超级用户,这对我来说非常有意义,所以我就在这里。
我喜欢没有 www但有点担心一些缺点,例如在根域和所有子域之间共享 cookie(并不是说我目前实际上对 cookie 了解很多,但我确实希望能面向未来)。
我猜想这可能通过某种别名类型的东西实现。但我可能错了,所以我在这里问。
因此,澄清一下,是否有可能http://foo.com/在地址栏中http://www.foo.com/是否正在被访问?
编辑:我计划与NearlyFreeSpeech.NET。服务器是 Apache,我猜操作系统是某种 Linux。
编辑2: 那么你真的明白我的意思吗?我正在寻找的是:当人们浏览该网站时,http://foo.com/是他们在地址栏中看到的,但是http://www.foo.com/是正在访问的内容。我不得不说 Xorlev 的答案看起来最接近,但考虑到潜在的 cookie 问题以及我将使用共享 IP 托管,它能起作用吗?
答案1
是的。根据 Web 服务器配置,您要么什么都不做(如果使用基于 IP 的虚拟主机或根本不使用虚拟主机),要么使用 ServerName 和 ServerAlias 指令配置基于名称的虚拟主机。
在 Apache 中,它看起来像这样:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName foo.com
ServerAlias www.foo.com
# Virtual host document root, logging, other configuration here
</VirtualHost>
您还需要 foo.com. 和 www.foo.com. 的 DNS 来解析为同一个地址。
答案2
如果允许的话我会发表评论。
Charles 的回答是正确的。有一件事你可能想做些不同的事情。我通常将 foo.com DNS 条目设置为 IP 的 A 记录,将 www.foo.com 条目设置为 foo.com 的 CNAME 记录。因此,如果您的 IP 发生变化,您不需要同时更改两者。但这只是一个小细节。
答案3
我认为这些都不能回答这个问题。你的主要问题在于 cookies:如果你将它们设置为example.com
,浏览器将将它们发送到*.example.com
,包括提供静态内容的域,例如images.example.com
或static.example.com
。那么你的问题是临时缓存(例如缓存代理或浏览器)可能会拒绝缓存使用 cookies 请求的任何内容。这会将负载发送回你的主服务器。
许多人建议使用www
子域名,这样您就可以从那里提供 Cookie,而不会将它们发送回您的static
子域名。不幸的是,如果您这样做,您将无法获得无 www 的 URL。我的建议是使用完全不同的顶级域名来处理静态内容:
主要:example.com
静态:examplestatic.com
以twitter.com
为例。他们没有www
,他们从 提供图像和 CSS twimg.com
。
答案4
无论您选择哪个域名,请记住要遵循其顺序。搜索引擎的索引会受到您的选择的影响。
即谷歌:http://www.google.com/support/webmasters/bin/answer.py?hl=en&answer=44231