在工作中,我们有一个具有暂存域的登台服务器,类似于https://staging.example.com。我们最近决定在新服务器上从Apache切换到NGINX,而我们的Laravel路由问题也存在问题。
我们所有的laravel应用程序都位于登台服务器的子目录中,如此。
我尝试按Laravel docs中的说明配置NGINX配置文件,但在访问任何第二级路由时获取404,即https://staging.example.com/app1/public/a/b
使用类似下面的配置,我可以访问应用程序中的所有路径。
location @laravel {
rewrite /app1/public/(.*)$ /app1/public/index.php?$1;
}
location / {
try_files $uri $uri/ @laravel;
}
但是,我们在此服务器上托管了许多应用,并且我们不希望每次要向服务器添加应用时都必须更新NGINX配置文件。
有没有办法构建重写以应用于任何子目录并保持Laravel的路由系统正常工作?
注意:我也尝试过这次重写rewrite (.*)/(.*)$ $1/index.php?$2
,这对二级路线无效。
答案 0 :(得分:1)
您的第一次捕获可能过于贪婪,您应该使用以下方法限制它:
rewrite ^(/[^/]+/[^/]+)/(.*)$ $1/index.php?$2 last;
在正则表达式上查看this useful resource。