美文网首页Nginx高端成长之路LaravelPHP经验分享
Nginx下使用Laravel,网站根目录不在laravel框架

Nginx下使用Laravel,网站根目录不在laravel框架

作者: 477f0b404a70 | 来源:发表于2017-04-13 15:27 被阅读363次

    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,已经可以访问了。

    同时,新问题又来了,页面引入的cssjs,和其他静态素材404了,
    这时可能需要调整代码,或者参考下面:

    nginx设置:

    location  ~* \.(gif|jpg|jpeg|css|js|png|tff)$ {
        try_files $uri $uri/ =404;
    }
    

    静态素材也可以引入进来了,ok!

    静态素材,使用相对路径,可能会出现上述引入文件404问题

    相关文章

      网友评论

        本文标题:Nginx下使用Laravel,网站根目录不在laravel框架

        本文链接:https://www.haomeiwen.com/subject/jxbbattx.html