Stack Overflow(和其他网站)如果在作为网址的一部分输入时删除了'www'前缀?
是重定向,重写还是完全不同的其他内容?
更新:我特别想知道IIS 6的上下文
答案 0 :(得分:12)
在Apache上,它看起来像这样(在.htaccess文件中):
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
答案 1 :(得分:12)
一种简单的方法是使用Apache“Redirect”指令:
<VirtualHost *:80>
ServerName www.example.com
Redirect permanent / http://example.com/
</VirtualHost>
<VirtualHost *:80>
ServerName example.com
# remainder of server configuration goes here
</VirtualHost>
Redirect指令会自动保留URL中/
之后的任何内容。我发现这种方法比Rewrite方法更容易阅读和理解。
答案 2 :(得分:10)
点击Fiddler,我们可以看到服务器响应带有“301 Moved Permanently”状态,并将其引用到http://stackoverflow.com。 由于StackOverflow托管在Windows 2k8 IIS7 上,因此他们会立即在IIS7中设置此重定向。
仅供参考:
如果您是.NET开发人员,您可能知道“Respose.Redirect”,这会创建一个302 Object Moved状态。在这种情况下,像301状态代码的搜索引擎更好,因为他们知道将来不应该回到www.stackoverflow.com。
答案 3 :(得分:5)
您可以通过多种方式实现,使用mod_rewrite和重定向是我的最爱。像这样:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.cuenca.co$ [NC]
RewriteRule ^(.*)$ http://cuenca.co/$1 [R=301,L]
答案 4 :(得分:4)
重定向。子域“www.stackoverflow.com”只会重定向到“stackoverflow.com”。
答案 5 :(得分:1)
您需要添加一个指向Web服务器的默认dns条目。
ping site.com并验证ip是否指向webserver,如果不是,则需要添加默认的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页面来执行此操作。
答案 6 :(得分:0)
这还有很长的路要走,但据我所知这是一个DNS设置。我认为您不需要指定主机地址(WWW是站点所在的主机(或计算机/群集......)的名称。)。
我认为您可以将其设置为将所有请求发送到默认主机。
不是100%肯定,但请查看DNS的可能性。
希望有助于或者至少让你朝着正确的方向前进。
答案 7 :(得分:0)
你可以使用类似的IIS重写器来执行mod_rewrite为Apache做的事情。一个好的是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可以免费使用。
答案 8 :(得分:0)
对于apache
<VirtualHost *:80>
ServerName yourdomain.tld
ServerAlias www.yourdomain.tld