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的主要内容,如果未能解决你的问题,请参考以下文章

Nginx 配置二级虚拟目录访问 Laravel 后台重写

Laravel解决预请求和跨域的问题

Laravel 5.2 - 每个域的 Homestead 相同站点加载

Laravel 虚拟主机不工作

限制保存在我的数据库中的特定域的 PHP API

laravel 中的护照详细信息 api 在本地主机上可以正常工作,但不能在共享主机上运行