Laravel Ngrok和绝对URL

Laravel Ngrok和绝对URL,laravel,ngrok,Laravel,Ngrok,我使用此命令启动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)都是指向本地定义域的绝

我使用此命令启动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,例如,或。换句话说,我可以很好地加载站点,但其他人只看到一堆未设置样式的html,就得到了一个没有功能的站点

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

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

  • 将应用程序中的所有链接重写为相对链接,而不是 绝对(哦,上帝,请不要)
  • 任何希望通过*.ngrok.io url访问我的站点的客户端都必须将自己的/etc/hosts文件中的“testsite.local”域映射到ngrok.io url
  • 这些方法可能会奏效,但这似乎还远远不够。。。难道没有别的办法吗

    解决方案


    在xammp/apache/conf/httd.conf中

    DocumentRoot“C:/xampp/htdocs/{您的项目路径}”


    httpd.conf中的目录“C:/xampp/htdocs/{your project path}”

    将文档根目录和目录设置为项目的路径

    DocumentRoot“C:/xampp/htdocs/projectName”
    

    您需要使用Apache模块mod_替换。 首先,启用模块:

    a2enmod substitute
    service apache2 restart
    
    然后,将以下内容添加到.htaccess文件中:

    AddOutputFilterByType SUBSTITUTE text/html
    Substitute "s|<your-local-link>|<your-ngrok-link>|in"
    
    AddOutputFilterByType替换文本/html
    将“s | | | in”替换为
    

    更多信息:

    我认为你不应该将绝对链接链接链接到css等。但是我相信你可以使用.htaccess文件来重新路由URL。在WordPress社区中,我们遇到了与WordPress经常使用绝对URL相同的问题。通常采用的解决方案是使用WordPress内部钩子将绝对URL动态转换为相对URL。如果你的应用程序不是基于事件的,我不知道你会怎么做……在httpd.conf中,将DocumentRoot和目录设置为项目的路径DocumentRoot“C:/xampp/htdocs/projectName”`似乎没有人理解您的问题。我也有同样的问题。你让ngrok处理绝对URL了吗?@Guerrilla我在这里回答了这个问题:提供关于如何和/或为什么解决这个问题的附加上下文将提高答案的长期价值……这看起来很有希望。