ServerAlias影响$ _SERVER ['SERVER_NAME']?

时间:2012-03-30 22:17:54

标签: php

基本上我有一个经典的虚拟主机:

ServerName www.site.com
ServerAlias site.com

即使有人打开$_SERVER['SERVER_NAME'] = 'www.site.com';

,我也希望site.com

这可能吗?

2 个答案:

答案 0 :(得分:2)

不,PHP对ServerName,ServerAlias等一无所知。

正确的解决方案是将您的网络服务器配置为从您的所有别名域重定向到主域。从SEO的角度来看,这也是一件好事。

你可以这样做,例如使用mod_rewrite

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

如果您有其他域名,只需为他们设置一个单独的VirtualHost,然后重定向到您的主域名:

<VirtualHost ...>
        ServerName site2.com
        ServerAlias *.site2.com
        Redirect / http://www.site.com/
</VirtualHost>

答案 1 :(得分:1)

将www重定向到空域通常是最佳做法,反之亦然。您可以通过将此添加到.htaccess:

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

这样,site.com会重定向到www.site.com,您只会在www.site.com变量中看到SERVER_NAME