Nginx下使用Laravel可能出现的问题
使用laravel框架时,可能会遇到这种问题:
网站的根目录为:/var/www/mypj/
laravel地址为:/var/www/mypj/laravel/
这种情况下,访问laravel内入口文件,需要:
192.168.111.111/laravel/public/
访问路由 "/home",需要:
192.168.111.111/laravel/public/home
访问 /home
等除/
以外的路由,有可能会全部返回404。
解决方法:
框架路由:
Laravel
的入口文件在public
目录下,其实根目录下的server.php
也可以做入口文件使用。
将server.php
重命名为index.php
这时,便可以通过域名访问192.169.111.111/laravel/public/
访问 /
路由,
同时,也可以通过域名访问192.169.111.111/laravel/
访问 /
路由,
需要注意这一点:
Route::get("/home","HomeController@index"); //使用/home,而不是home。
Nginx配置文件:
将server.php
重命名后,我们可以在Nginx
的配置文件中这样设置:
1.设置网站根目录:
server_name 192.168.111.111;
root /var/www/mypj/;
2.设置location:
location / {
try_files $uri $uri/ /index.php?$query_string;
}
3.设置laravel下的location:
location /laravel/ {
rewrite ^/laravel/(.*)$ /laravel/index.php?s=$1 last;
index index.php;
}
再次尝试 192.168.111.111/laravel/home
,已经可以访问了。
同时,新问题又来了,页面引入的css
,js
,和其他静态素材
404了,
这时可能需要调整代码,或者参考下面:
nginx设置:
location ~* \.(gif|jpg|jpeg|css|js|png|tff)$ {
try_files $uri $uri/ =404;
}
静态素材也可以引入进来了,ok!
静态素材,使用相对路径,可能会出现上述引入文件404问题
网友评论