Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

如果配置了虚拟主机,比如使得 app.dev 指向 myapp/laravel/public 文件夹,此时通过配置 nginx 中的 try_files 即可正常访问 Laravel 项目里设置的路由。

但如果不配置虚拟主机,假设 nginx 的根目录位于 myapp,此时要访问该 Laravel 项目理应通过 localhost/laravel/public/myroute 访问 /myroute 这一路由,但这种情况下 try_files 配置会把请求导向 localhost/index.php,从而导致 404 错误。

我试图通过 .htaccess 转 nginx 配置的方式,但依然没有如愿。似乎这种方式只适用于 Apache 之下。那么如果不配置虚拟主机,在 nginx 中该怎么运行 Laravel 项目呢(不考虑把根目录设置到 public)?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
595 views
Welcome To Ask or Share your Answers For Others

1 Answer

尝试了一下,把对应的root改成实际的情况,把原来的try_files的/index.php?$query_string改成/public/index.php?$query_string,重启nginx后一切正常(debian环境).所以这个强行把root指向到public上一级是可行的.

但是,如果是生产环境,强烈不建议你这么做.因为root指向的是public上一级的话,几乎所有的文件都是可请求的,虽然很多会报错,但是这绝对违背了laravel的初衷.而且,是非常非常不安全的行为.比如http://xxx.com/.env 如果你的nginx不做特殊处理,用户将可以下载到你的.env文件,危害你懂的.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...