【问题标题】:Localhost working while virtual host not woking本地主机工作,而虚拟主机不工作
【发布时间】:2018-02-06 03:31:43
【问题描述】:

我已经在 C:/wamp64/ 文件夹中安装了 wamp

我创建了一个名为 sampleapp.dev 的虚拟主机。但是当我访问它时,它显示“无法访问此站点”。

我的 httpd-vhosts 文件

# Virtual Hosts
#
<VirtualHost *:80>
  ServerName localhost
  ServerAlias localhost
  DocumentRoot "${INSTALL_DIR}/www"
  <Directory "${INSTALL_DIR}/www/">
    Options +Indexes +Includes +FollowSymLinks +MultiViews
    AllowOverride All
    Require local
  </Directory>
</VirtualHost>

<VirtualHost *:80>
  ServerName sampleapp.dev
  DocumentRoot "C:/wamp64/www/sampleapp/public"
</VirtualHost>

我的主机文件

127.0.0.1   localhost
::1  localhost

127.0.0.1 sampleapp.dev
::1  sampleapp.dev

我做错了什么?

【问题讨论】:

  • 您在应用上述更改后是否重新启动了服务器?
  • 是的。但这似乎不起作用
  • Windows 也会缓存 hosts 文件,尝试重启或运行ipconfig /flushdns
  • 我重新启动了机器。但还是不行
  • 1) 您是否设置了sampleapp.dev 的权限,就像您为localhost 所做的那样?尝试一些简单的设置,例如Require all granted 2) 您是否删除了NameVirtualHost *:80 之前的#

标签: php laravel apache wamp


【解决方案1】:
<VirtualHost *:80>
  ServerName sampleapp.dev
  ServerAlias sampleapp.dev
  DocumentRoot "C:/wamp64/www/sampleapp/public"
</VirtualHost>


<Directory "C:/wamp64/www/sampleapp/public">
   Options Indexes FollowSymLinks Includes ExecCGI
   AllowOverride All
   Require all granted
</Directory>

我的设置 它正在工作

【讨论】:

  • 我将上面的代码粘贴到 httpd-vhosts 文件中。但它不适合我
  • 什么样的错误代码? 404 或 403 看到一个 \apache\logs\access.log 或 error.log
  • 无法访问此站点 sampleapp.dev 拒绝连接。尝试:检查连接检查代理和防火墙 ERR_CONNECTION_REFUSED
  • 可能是某些模块未安装,例如 mysql.. 和 .. 如果您设置了 laravel 框架,则您没有设置 .env 文件。那么你没有安装作曲家
【解决方案2】:

从 localhost 虚拟主机的定义中可以看出,您需要的不仅仅是定义的 VH 的名称,您还必须告诉 Apache 允许谁访问您的新虚拟主机。

&lt;Directory...&gt; 块告诉 Apache,特别是 Require local 块,但其他参数也告诉 Apache 关于在这个新 VH 中允许做什么的有用信息。

试试下面的修改。

我已将sampleapp.dev 更改为sampleapp.test。这是因为如果您曾经使用 Chrome 浏览器,.dev tLD 现在会做一些奇怪的事情。 Google 购买了.dev tLD,Chrome 现在将尝试在所有.dev tLD 上强制使用 SSL (https)。简单的解决方案,只需使用 .local.test 之类的其他内容

# Virtual Hosts
#
<VirtualHost *:80>
  ServerName localhost
  ServerAlias localhost
  DocumentRoot "${INSTALL_DIR}/www"
  <Directory "${INSTALL_DIR}/www/">
    Options +Indexes +Includes +FollowSymLinks +MultiViews
    AllowOverride All
    Require local
  </Directory>
</VirtualHost>

<VirtualHost *:80>
  ServerName sampleapp.test
  ServerAlias www.sampleapp.test
  DocumentRoot "${INSTALL_DIR}/www/sampleapp/public"
  <Directory "${INSTALL_DIR}/www/sampleapp/public/">
    Options +Indexes +Includes +FollowSymLinks +MultiViews
    AllowOverride All
    Require local
  </Directory>
</VirtualHost>

当我使用.test 而不是.dev 时,您还必须相应地更改您的 HOSTS 文件,然后从使用“以管理员身份运行”开始的命令窗口重新启动或刷新您的 dnscache。

同时避免使用Require all granted,除非你真的想允许宇宙进入你的服务器。如果您的路由器阻止端口 80,默认情况下它们会执行此操作,则实际上没有任何东西可以进入您的 WAMPServer。但是,当您决定要向朋友展示您的新站点并将端口转发端口 80 到您的 WAMPServer PC 时,所有使用 Require all granted 的站点都将变得可见。最好只在您真正希望在互联网上可见的网站上进行更改。

>net stop dnscache
>net start dnscahce

【讨论】:

    猜你喜欢
    • 2014-07-04
    • 2013-04-10
    • 2017-07-05
    • 2016-11-07
    • 2018-05-09
    • 2011-03-08
    • 2016-11-27
    相关资源
    最近更新 更多