Laravel在虚拟主机中访问没有域的api
Posted
技术标签:
【中文标题】Laravel在虚拟主机中访问没有域的api【英文标题】:Laravel access api without domain in virtual hosts 【发布时间】:2018-04-09 10:51:13 【问题描述】:当我的虚拟主机设置如下时,我已经完成了一个 laravel 应用程序的设置和工作:
ServerName mylaravelproj.com
<Directory /var/www/mylaravelproj/public>
..rules here
所以我需要做的就是访问 mylaravelproj.com/api/whateverRouteHere
但是,我不知道如何在没有域名的情况下访问 api
DocumentRoot /var/www/mylaravelproj/public
<Directory /var/www/mylaravelproj/public>
..rules here
访问 192.168.xxx.xxx/mylaravelproj/public/api/whateverRouteHere 时不起作用
我对配置 apache 还是很陌生,对为什么这不起作用有点困惑。
【问题讨论】:
【参考方案1】:如果您的服务器正在侦听域 mylaravelproj.com
,那么为什么不向您的 hosts
文件添加一个条目,如下所示:
192.168.xxx.xxx mylaravelproj.com
然后刷新您的 DNS 缓存,然后访问 http://mylaravelproj.com,您应该能够访问您的应用。
在 Windows 上,这是我通常设置 laravel 应用程序的方式。我使用 XAMPP,所以我将以下条目添加到:C:\xampp\apache\conf\extra\httpd-vhosts.conf
<VirtualHost *:80>
ServerName mylaravelproj.com
DocumentRoot "C:/xampp/htdocs/mylaravelproj/public"
</VirtualHost>
然后在命令提示符中使用 ipconfig /all 在 Windows 中获取我的 LAN ip(假设我的 LAN ip 是 192.168.1.122
),然后在主机文件中设置它:C:\ Windows\System32\drivers\etc\hosts
192.168.1.122 mylaravelproj.com
然后在命令提示符中,使用 ipconfig /flushdns
刷新 DNS 缓存注意*使用完整域运行开发环境不是一个好主意,您应该使用 mylaravelproj.dev 或 mylaravelproj.local 之类的东西
【讨论】:
我无法向主机添加东西,因为我试图通过移动设备访问它并访问它们中的每一个并篡改主机文件会很乏味:/。我在本地网络中提供服务,我想知道是否可以在没有域名的情况下以某种方式完成 然后你需要查看动态 DNS(例如noip.com)或者给自己买一个便宜的 5 美元的 DigitalOcean VPS 并在线部署你的应用程序。 所以基本上,除了通过外部托管/主机文件或 dyn dns 之外别无他法:/。我只是想知道为什么 mylaravelproj.com/api/whateverRouteHere 有效,但 192.168.xxx.xxx/mylaravelproj/public/api/whateverRouteHere 无效。我的意思是第一个解析到几乎相同的 url.. 对吗? 您有任何错误吗?你可以试试这个:***.com/questions/26706846/… 然后你可以像这样访问你的应用 api 端点:192.168.xxx.xxx/api/whateverRouteHere
即使我将 000-default 设置为项目的根目录,我也找不到 404 页面。在这种情况下,提供了公共 Laravel 页面,但 api 不起作用。所以192.168.1.34/api/test 不起作用,而whateverdomain/api/test 起作用这可能是 laravel 特有的事情,但对我来说为什么一个起作用而另一个不起作用,因为它们似乎本质上是同一件事。值得注意的是,普通的 192.168.1.34 和 whateverdomain 都按预期显示在 laravel 公共文件夹中找到的相同页面,因此它必须是一个实现细节......以上是关于Laravel在虚拟主机中访问没有域的api的主要内容,如果未能解决你的问题,请参考以下文章