小编研究学习laravel过程中,laravel路由设置应该很容易啊,可是小编在宝塔面板下配置laravel路由硬是折腾了不少时间,现将踩过的坑跟大家说说。
原来的配置
关于laravel路由设置,官方是这样说的,
NginxIf you are using Nginx, the following directive in your site configuration will direct all requests to the index.php front controller:location / {try_files $uri $uri/ /index.php?$query_string;}
小编测试环境用的就是宝塔面板的Nginx-1.11.13
于是在nginx.conf文件中做了如下配置
重点是这行
location / {try_files $uri $uri/ /index.php?$query_string;}
在 vhost目录中的网站218.22.250.70.conf文件中配置如下
小编开始认为只要nginx.conf文件有路由改写配置就可以了,结果不承想laravel中routes/web.php的如下内容基本上都路由不成功。
Route::get('test',function(){echo 'key';});Route::get('/', function () {return view('welcome');});Route::get('foo', function () {return 'Hello World';});
结果是这这样的
看来只有218.22.250.70/ 这个网站根目录路由才可以,其它都不行,为什么?小编为此折腾了好几天。
修改的配置
终于有一天,小编想是不是还是ngnix配置的问题,小编在vhost/218.22.250.70.conf文件中也做了如下配置
location / {try_files $uri $uri/ /index.php?$query_string;}
如图
再次重启nginx后访问218.22.250.70/foo,终于如愿以偿的出现了期望的界面
至此,宝塔面板下laravel的路由设置终于配置正确。
总结
宝塔面板支持创建多个网站,在配置nginx时要针对子网站的需要配置好vhost/*.conf文件,如上所述,总的nginx.conf文件有的配置并不能继承到vhost/*.conf中去。类的继承概念在这里不起作用。