当我这样进入我的域名
www.domain.com
一切正常。 但是,当我这样进入它
domain.com
我得到'它的工作! 页。 我是一个完整的Apache新手,所以我不完全确定这里出了什么问题。
传统解决scheme:在httpdconfiguration中,find:
ServerName www.domain.com
并添加:
ServerAlias domain.com
但是,这将为您提供一个服务器,在domain.com和www.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
我解决了这里所说的警告,即:
servername.conf文件: sudo vi /etc/apache2/conf-available/servername.conf ServerName localhost添加到servername.conf sudo a2enconf servername sudo systemctl reload apache2 而没有www工作的唯一网站(redirect到“It Works”页面)现在正在工作!
我的解决scheme与迄今为止在这里发布的所有内容不同。
检查你的服务器的主机名。 就我而言,我已经将我的服务器的主机名设置为与我的域名(例如example.com 。 当有人试图访问http://example.com ,会导致Apache的默认/空白页面,因为它正在服务于_default_ VirtualHost。
我认为这是因为Apache正在以example.com解决默认的本地主机地址。 为了解决这个问题,我做了两件事(尽pipe或者可能工作):
hostname somethingelse和编辑/etc/sysconfig/network将我的主机名更改为somethingelse 。 ServerName random_nonexistent_string添加到默认的VirtualHost块。