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