没有“www”的域名 给我的Apache“它的工作!” 页

当我这样进入我的域名

www.domain.com 

一切正常。 但是,当我这样进入它

 domain.com 

我得到'它的工作! 页。 我是一个完整的Apache新手,所以我不完全确定这里出了什么问题。

传统解决scheme:在httpdconfiguration中,find:

 ServerName www.domain.com 

并添加:

 ServerAlias domain.com 

但是,这将为您提供一个服务器,在domain.comwww.domain.com上使用相同的内容进行响应。 通常认为只有一个规范的主机名是可取的(尤其是SEO方式)。 要做到这一点,添加一个新的虚拟服务器的redirect,而不是别名。

 <VirtualHost *:80> ServerName domain.com Redirect permanent / http://www.domain.com/ </VirtualHost> 

这与其他人所说的Apacheconfiguration有关。

只需将一个ServerAlias添加到您的虚拟主机的apacheconfiguration中就可以为您做到这一点。 我不认为创build另一个虚拟主机是不错的做法,请重新定向。

这是一个很好的SEO实践指导一切到另一个,我build议使用此configuration文件或在您的.htaccess

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

检查你的apacheconfiguration文件中的mod_alias ,确保正则expression式对于redirect是正确的。

另一个可能的解决scheme是默认网站捕捉stream量。 这对我有用 – 如果你不关心完全禁用默认网站:

 a2dissite 000-default service apache2 reload 

我也有这个问题,并find我的解决scheme在这里 。

基本上,升级后,Apache把一个符号链接放在/etc/apache2/sites-available 。 删除<VirtualHost *:80><VirtualHost>所有内容让所有的东西都能为我工作。

我遇到了完全一样的问题。 但是,我的解决scheme并不是已经讨论过的,所以值得分享。

在我的情况下,我已经升级了Apache,但符号链接不在那里,就像@Hannele的情况。 我有几个网站进入同一个VPS。 除了一个之外 ,所有人都使用或不使用www使用类似下面的简单.conf:

 <VirtualHost *:80> ServerName mysite1.com ServerAlias www.mysite1.com DocumentRoot /home/myuser/apps/myappname1/public ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory "/home/myuser/apps/myappname1/public"> Options FollowSymLinks AllowOverride all Options -MultiViews Require all granted </Directory> </VirtualHost> 

我偶然看到了apachectl -V ,并有一个警告。 由于没有任何改变,但Apache的升级和我的VPS重新启动,我认为这将是值得解决这个警告,看看…它的工作! 贝娄是警告:

 Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName 

我解决了这里所说的警告,即:

  1. 创build一个servername.conf文件: sudo vi /etc/apache2/conf-available/servername.conf
  2. ServerName localhost添加到servername.conf
  3. 运行sudo a2enconf servername
  4. 重新加载apache: sudo systemctl reload apache2

而没有www工作的唯一网站(redirect到“It Works”页面)现在正在工作!

我的解决scheme与迄今为止在这里发布的所有内容不同。

检查你的服务器的主机名。 就我而言,我已经将我的服务器的主机名设置为与我的域名(例如example.com 。 当有人试图访问http://example.com ,会导致Apache的默认/空白页面,因为它正在服务于_default_ VirtualHost。

我认为这是因为Apache正在以example.com解决默认的本地主机地址。 为了解决这个问题,我做了两件事(尽pipe或者可能工作):

  1. 使用hostname somethingelse和编辑/etc/sysconfig/network将我的主机名更改为somethingelse
  2. 随机的ServerName random_nonexistent_string添加到默认的VirtualHost块。