尝试使用 XAMPP 访问虚拟主机上的 Laravel 项目时无法检索请求的 URL
The requested URL could not be retrieved while trying to access Laravel project on Virtual Host with XAMPP
我想用 XAMPP 为我的 Laravel 项目创建一个虚拟主机,所以我遵循了以下步骤:
步骤 1) C:\WINDOWS\system32\drivers\etc\
打开“主机”文件(以管理员身份):
127.0.0.1 test.com
步骤 2)xampp\apache\conf\extra\httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs/freedeliveries/public"
SetEnv APPLICATION_ENV "development"
<Directory "C:/xampp/htdocs/freedeliveries/public">
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ServerName www.test.com
</VirtualHost>
步骤 3)C:\xampp\apache\conf\httpd.conf
。向下滚动到末尾的 Supplemental configuration 部分,并找到以下部分(大约第 500 行),从第二行的开头删除 #
因此该部分现在看起来像这样:
#Virtual hosts
Include conf/extra/httpd-vhosts.conf
步骤 4) 重新启动 XAMPP 现在 运行 在我的浏览器中:
www.test.com
但现在我得到了这个结果:
ERROR The requested URL could not be retrieved
The following error was encountered while trying to retrieve the URL: http://test.com/
Unable to determine IP address from hostname test.com
The DNS server returned:
Name Error: The domain name does not exist.
This means that the cache was not able to resolve the hostname presented in the URL. Check if the address is correct.
Your cache administrator is root.
那么如何解决此问题以及 运行 虚拟主机名上的 Laravel 项目?
更新:
按照这些步骤您将得到您的解决方案
1.为您的项目创建本地域:
所以你需要修改位于
的Windows的hosts文件
C:\Windows\System32\drivers\etc\hosts
然后在您的系统上使用自定义主机添加主机,在这种情况下,我们将添加 127.0.0.2
主机,该主机也可以使用别名“www.test.com
”访问。
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
127.0.0.2 www.test.com
2。配置虚拟主机
laravel 应用程序的入口点是 public 文件夹内的 index.php,因此我们的应用程序所需的目录将是 public 文件夹中项目的绝对路径如以下示例所示。
虚拟主机需要在 80 端口指向 windows 的主机文件中声明的同一主机(在本例中为 127.0.0.2)。您可以在内容末尾附加以下代码段来创建此虚拟主机httpd-vhosts.conffile 位于
xampp folder \xampp\apache\conf\extra
<VirtualHost 127.0.0.2:80>
DocumentRoot “C:/xampp/htdocs/freedeliveries/public”
DirectoryIndex index.php
ServerName www.test.com
<Directory “C:/xampp/htdocs/freedeliveries/public”>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order Deny,Allow
Allow from all
Require all granted
</Directory>
</VirtualHost>
3。从浏览器打开您的项目
最后正如预期的那样,通过在浏览器中访问 www.test.com
或 127.0.0.2
将显示 Laravel 应用程序的入口点:
有关更多详细信息,请关注此 URL .
port in use问题解决方法
禁用已经是 运行 的 FTP 服务器(很可能 运行 通过 Windows Add/Remove 程序 -> Windows 功能) .否则,您将需要更改位于 %APPDATA%/FileZilla
的 FileZilla 设置中的端口
如果您想在项目中支持子域,则需要 DNS 服务。你可以简单地使用 Acrylic DNS Service, the configuration setup is here.
如果使用 Acrylic DNS 服务
- 转到亚克力 UI
- 从文件打开 Acrylic Host> 打开 Acrylic Hosts
- 将
127.0.0.1 *.test.com test.com
放在主机文件的底部
- 从操作>重新启动 Aclyic 服务重新启动 DNS 服务
- 将
127.0.0.1 test.com
放入您的 windows 主机文件
您还可以设置支持 httpd-vhosts.conf
中域的 vhost 文件
<VirtualHost test.com:80>
DocumentRoot "C:/xampp/htdocs/freedeliveries/public"
ServerName test.com
ServerAlias *.test.com
SetEnv APPLICATION_ENV "development"
<Directory "C:/xampp/htdocs/freedeliveries/public">
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
只需将此路由添加到 /public folder
中的 .htaccess
文件即可。感谢@randall 添加 this answer
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/ [R=301,L]
如果不使用 DNS 服务
如果您只需要 www.test.com,您可以简单地将 windows 主机文件中的主机指定为 127.0.0.1 www.test.com
,如 @rakesh 所示并按照步骤操作。
我想用 XAMPP 为我的 Laravel 项目创建一个虚拟主机,所以我遵循了以下步骤:
步骤 1) C:\WINDOWS\system32\drivers\etc\
打开“主机”文件(以管理员身份):
127.0.0.1 test.com
步骤 2)xampp\apache\conf\extra\httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs/freedeliveries/public"
SetEnv APPLICATION_ENV "development"
<Directory "C:/xampp/htdocs/freedeliveries/public">
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ServerName www.test.com
</VirtualHost>
步骤 3)C:\xampp\apache\conf\httpd.conf
。向下滚动到末尾的 Supplemental configuration 部分,并找到以下部分(大约第 500 行),从第二行的开头删除 #
因此该部分现在看起来像这样:
#Virtual hosts
Include conf/extra/httpd-vhosts.conf
步骤 4) 重新启动 XAMPP 现在 运行 在我的浏览器中:
www.test.com
但现在我得到了这个结果:
ERROR The requested URL could not be retrieved
The following error was encountered while trying to retrieve the URL: http://test.com/
Unable to determine IP address from hostname test.com
The DNS server returned:
Name Error: The domain name does not exist.
This means that the cache was not able to resolve the hostname presented in the URL. Check if the address is correct.
Your cache administrator is root.
那么如何解决此问题以及 运行 虚拟主机名上的 Laravel 项目?
更新:
按照这些步骤您将得到您的解决方案
1.为您的项目创建本地域:
所以你需要修改位于
的Windows的hosts文件C:\Windows\System32\drivers\etc\hosts
然后在您的系统上使用自定义主机添加主机,在这种情况下,我们将添加 127.0.0.2
主机,该主机也可以使用别名“www.test.com
”访问。
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
127.0.0.2 www.test.com
2。配置虚拟主机 laravel 应用程序的入口点是 public 文件夹内的 index.php,因此我们的应用程序所需的目录将是 public 文件夹中项目的绝对路径如以下示例所示。 虚拟主机需要在 80 端口指向 windows 的主机文件中声明的同一主机(在本例中为 127.0.0.2)。您可以在内容末尾附加以下代码段来创建此虚拟主机httpd-vhosts.conffile 位于
xampp folder \xampp\apache\conf\extra
<VirtualHost 127.0.0.2:80>
DocumentRoot “C:/xampp/htdocs/freedeliveries/public”
DirectoryIndex index.php
ServerName www.test.com
<Directory “C:/xampp/htdocs/freedeliveries/public”>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order Deny,Allow
Allow from all
Require all granted
</Directory>
</VirtualHost>
3。从浏览器打开您的项目
最后正如预期的那样,通过在浏览器中访问 www.test.com
或 127.0.0.2
将显示 Laravel 应用程序的入口点:
有关更多详细信息,请关注此 URL .
port in use问题解决方法
禁用已经是 运行 的 FTP 服务器(很可能 运行 通过 Windows Add/Remove 程序 -> Windows 功能) .否则,您将需要更改位于 %APPDATA%/FileZilla
的 FileZilla 设置中的端口如果您想在项目中支持子域,则需要 DNS 服务。你可以简单地使用 Acrylic DNS Service, the configuration setup is here.
如果使用 Acrylic DNS 服务
- 转到亚克力 UI
- 从文件打开 Acrylic Host> 打开 Acrylic Hosts
- 将
127.0.0.1 *.test.com test.com
放在主机文件的底部 - 从操作>重新启动 Aclyic 服务重新启动 DNS 服务
- 将
127.0.0.1 test.com
放入您的 windows 主机文件
您还可以设置支持 httpd-vhosts.conf
<VirtualHost test.com:80>
DocumentRoot "C:/xampp/htdocs/freedeliveries/public"
ServerName test.com
ServerAlias *.test.com
SetEnv APPLICATION_ENV "development"
<Directory "C:/xampp/htdocs/freedeliveries/public">
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
只需将此路由添加到 /public folder
中的 .htaccess
文件即可。感谢@randall 添加 this answer
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/ [R=301,L]
如果不使用 DNS 服务
如果您只需要 www.test.com,您可以简单地将 windows 主机文件中的主机指定为 127.0.0.1 www.test.com
,如 @rakesh 所示并按照步骤操作。