我在我的本地机器上运行Apache,我试图创build一个子域,但它不工作。 这是我的(剥离):
<VirtualHost *:80> DocumentRoot /var/www/one ServerName one.localhost </VirtualHost> <VirtualHost *:80> DocumentRoot /var/www/two ServerName two.localhost </VirtualHost>
我最近加了one 。 这two条目已经有一段时间了,它仍然正常工作(显示网页,当我去two.localhost )。 事实上,我复制了整个two.localhost条目,只是简单地将two更改为one ,但它不起作用。 我已经尝试了以下每一个:
* `apachectl -k graceful` * `apachectl -k restart` * `/etc/init.d/apache2 restart` * `/etc/init.d/apache2 stop && !#:0 start`
如果/var/www/one不存在,Apache会发出抱怨,所以我知道它正在做某些事情 ,但是当我在浏览器中访问one.localhost ,浏览器抱怨没有任何东西。 我在那里放了一个index.html文件,也试着直接去one.localhost/index.html ,浏览器还是不行。 这是非常令人困惑的,因为我从two.localhost复制的条目是完全一样的..不仅如此,但如果出现错误,我期望得到一个500,而不是浏览器无法find任何东西。 error_log也没有什么额外的。
是/etc/hosts “one.localhost” – 使用ping one.localhostvalidationparsing
你有NameVirtualHost *:80指令吗? 您需要告诉Apache“*:80”是基于名称的虚拟主机,而不是基于IP地址的虚拟主机。 看到这里的区别: http : //httpd.apache.org/docs/2.2/vhosts/name-based.html
另外,你是否尝试过运行apachectl -t来对configuration文件执行语法检查?
您可以尝试查看您的服务器访问日志文件。 如果您没有find与您的源IP和请求的URL匹配的logging,那么您没有到达使用此子域名的服务器。
你没有提到的一点是one.localhost的DNS名称parsing。 您需要在DNS服务器中定义一个A / CNAMElogging来响应one.localhostparsing请求,或者至less需要在客户端计算机上的/etc/hosts文件中添加一个新条目( C:\Windows\System32\drivers\etc\hosts Windows机器中的C:\Windows\System32\drivers\etc\hosts )。
如果你能够到达你的服务器,那么很可能这是一个configuration问题。 你需要看整个configuration不只是一小部分。 此外,你可能有一些重写规则/ .htaccess文件等…