Laravel Ngrok 和绝对 URL

Posted

技术标签:

【中文标题】Laravel Ngrok 和绝对 URL【英文标题】:Laravel Ngrok and absolute URLs 【发布时间】:2017-01-10 10:46:33 【问题描述】:

我使用这个命令为一个 laravel 站点启动 ngrok,即 testsite.local:

ngrok http -host-header=rewrite testsite.local:80

我在/etc/hosts 中定义了testsite.local 以映射到127.0.0.1

这行得通,Ngrok 启动得很好,现在在某个随机的 *.ngrok.io 地址上为本地站点提供服务,我可以访问该地址。但是 laravel 应用程序中的所有 URL(例如,内部链接,或用于加载 css 或 js 文件的 URL)都是我本地定义的域的绝对 URL,例如 http://testsite.local/news 或 http://testsite.local/css/styles.css。换句话说,我可以很好地加载网站,但其他人只会看到一堆没有样式的 html 并得到一个无法正常运行的网站。

对于使用 ngrok 并在其项目中具有绝对 URL 的任何人来说,这一定是一个普遍问题,但 google 并没有提供任何有用的东西。

我想到了两种可能的方法:

    将应用程序中的所有链接重写为相对的而不是 绝对的(哦,上帝,请不要) 任何想要通过 *.ngrok.io url 访问我的站点的客户端都必须将他们自己的 /etc/hosts 文件中的“testsite.local”域映射到 ngrok.io url。

这些方法可能行得通,但这似乎太过分了……难道没有其他人可以做的吗?

解决方案

https://***.com/a/54488972/718980

【问题讨论】:

我认为您不应该将绝对链接链接到 css 等。但是我相信您可以使用 .htaccess 文件重新路由网址 您好,在 WordPress 社区中,我们遇到了与 Wordpress 经常使用绝对 URL 相同的问题。通常采用的解决方案是通过使用 WordPress 内部挂钩(例如github.com/optimizamx/odt-relative-urls)将绝对 URL 动态转换为相对 URL。如果您的应用不是基于事件的,我不确定您会如何做同样的事情...... 在 httpd.conf 中将 DocumentRoot 和 Directory 设置为项目的路径。 ` DocumentRoot "C:/xampp/htdocs/projectName" ` 似乎没有任何回复的人理解您的问题。我有同样的问题。您是否让 ngrok 使用绝对网址? @Guerrilla 我在这里回答了这个问题:***.com/questions/50194923/… 【参考方案1】:

您需要使用 Apache 模块 mod_substitute。 首先,启用模块:

a2enmod substitute
service apache2 restart

然后,将以下内容添加到 .htaccess 文件中:

AddOutputFilterByType SUBSTITUTE text/html
Substitute "s|<your-local-link>|<your-ngrok-link>|in"

更多信息:https://httpd.apache.org/docs/2.4/mod/mod_substitute.html

【讨论】:

这看起来很有希望。【参考方案2】:

在 xammp/apache/conf/httd.conf 中

DocumentRoot "C:/xampp/htdocs/your-project-path"

目录“C:/xampp/htdocs/your-project-path”

【讨论】:

提供有关解决问题的方式和/或原因的附加上下文将提高​​答案的长期价值...【参考方案3】:

在 httpd.conf 中,将 DocumentRoot 和 Directory 设置为项目的路径。

DocumentRoot "C:/xampp/htdocs/projectName" <Directory "C:/xampp/htdocs/projectName">

【讨论】:

以上是关于Laravel Ngrok 和绝对 URL的主要内容,如果未能解决你的问题,请参考以下文章

使用 Ngrok 公开 Nuxt/vue 前端和 laravel 后端本地环境

Ngrok 在隧道我的本地主机(Laravel)时返回 405 Method Not Allowed

当我使用 ngrok 加载我的 Laravel 应用程序时,它只显示基本的 html 而没有 css

ngrok 无法正常工作以测试 HTTPS

ngrok 无法正常工作以测试 HTTPS

Facebook Messenger 的 Webhook 不验证 Laravel5.4