首页 > 后端开发 > php教程 > nginx与apache服务url问题

nginx与apache服务url问题

WBOY
发布: 2016-10-17 09:30:06
原创
1053 人浏览过

问题描述

1. 最近在做自己的小博客,本地用的wamp集成环境,线上是lnmp。web框架使用的是thinkphp5.0.1,项目中有一个模块是front,控制器Article,分别有indexlistsshow方法。

2. tp框架中设置路由,如下所示

<code class="php">    #front文章
    'blog' => ['front/Article/index', [], []],
    'a/:id' => ['front/Article/show', [], []],
    'blogs' => ['front/Article/lists', [], []],
    'blog/add' => ['front/Article/add', [], []],
    'blog/edit/:id' => ['front/Article/edit', [], []],</code>
登录后复制
登录后复制

3. 并且设置了index方法重定向至lists方法

<code class="php">    public function index()
    {
        $this->redirect(Url::build('front/Article/lists', '', false));
    }</code>
登录后复制
登录后复制

4. 具体错误:在本地访问链接 1 http://www.ibala.top/blog链接 2 http://www.ibala.top/blog/ 效果是一样的,均是跳转至链接 3 http://www.ibala.top/blogs ;当将项目迁移至线上时,就发现问题了,访问链接 2时,却会跳转到 链接 4 http://www.ibala.top/index.php/blogs

5. 问题说明有些乱,朋友们可以解答我的遗憾吗?

nginx配置文件

<code>server
{
    listen 80;
    #listen [::]:80;
    server_name ibala.top www.ibala.top;
    index index.html index.htm index.php;
    root  /home/wwwroot/ibala.top/public;
    location / {
    if (!-e $request_filename) {
        rewrite  ^/(.*)$  /index.php/$1  last;
            break;
        }
    }

    ## php配置,兼容thinkphp框架
    location ~ .php {
        set $path_info "";
        set $real_script_name $fastcgi_script_name;

        if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
            set $real_script_name $1;
            set $path_info $2;
        }

        fastcgi_pass  unix:/tmp/php-cgi.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
        fastcgi_param SCRIPT_NAME $real_script_name;
        fastcgi_param PATH_INFO $path_info;
        fastcgi_param SERVER_PORT 80;
        include fastcgi_params;
    }
    
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
    }

    location ~ .*\.(js|css)?$
    {
        expires      12h;
    }

    location ~ /\.ht
    {
        deny all;
    }
    
    ## 禁止敏感文件的直接访问
    location ~* \.(inc|bak|sql|lua|so|ini|conf)$ {
        deny all;
    }
    
    access_log  /home/wwwlogs/ibala.top.log;
}</code>
登录后复制
登录后复制

回复内容:

问题描述

1. 最近在做自己的小博客,本地用的wamp集成环境,线上是lnmp。web框架使用的是thinkphp5.0.1,项目中有一个模块是front,控制器Article,分别有indexlistsshow方法。

2. tp框架中设置路由,如下所示

<code class="php">    #front文章
    'blog' => ['front/Article/index', [], []],
    'a/:id' => ['front/Article/show', [], []],
    'blogs' => ['front/Article/lists', [], []],
    'blog/add' => ['front/Article/add', [], []],
    'blog/edit/:id' => ['front/Article/edit', [], []],</code>
登录后复制
登录后复制

3. 并且设置了index方法重定向至lists方法

<code class="php">    public function index()
    {
        $this->redirect(Url::build('front/Article/lists', '', false));
    }</code>
登录后复制
登录后复制

4. 具体错误:在本地访问链接 1 http://www.ibala.top/blog链接 2 http://www.ibala.top/blog/ 效果是一样的,均是跳转至链接 3 http://www.ibala.top/blogs ;当将项目迁移至线上时,就发现问题了,访问链接 2时,却会跳转到 链接 4 http://www.ibala.top/index.php/blogs

5. 问题说明有些乱,朋友们可以解答我的遗憾吗?

nginx配置文件

<code>server
{
    listen 80;
    #listen [::]:80;
    server_name ibala.top www.ibala.top;
    index index.html index.htm index.php;
    root  /home/wwwroot/ibala.top/public;
    location / {
    if (!-e $request_filename) {
        rewrite  ^/(.*)$  /index.php/$1  last;
            break;
        }
    }

    ## php配置,兼容thinkphp框架
    location ~ .php {
        set $path_info "";
        set $real_script_name $fastcgi_script_name;

        if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
            set $real_script_name $1;
            set $path_info $2;
        }

        fastcgi_pass  unix:/tmp/php-cgi.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
        fastcgi_param SCRIPT_NAME $real_script_name;
        fastcgi_param PATH_INFO $path_info;
        fastcgi_param SERVER_PORT 80;
        include fastcgi_params;
    }
    
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
    }

    location ~ .*\.(js|css)?$
    {
        expires      12h;
    }

    location ~ /\.ht
    {
        deny all;
    }
    
    ## 禁止敏感文件的直接访问
    location ~* \.(inc|bak|sql|lua|so|ini|conf)$ {
        deny all;
    }
    
    access_log  /home/wwwlogs/ibala.top.log;
}</code>
登录后复制
登录后复制

可以参考这个:http://www.jb51.net/article/8...
不确定能用

估计是nginx配置的问题,给你个配置:
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php?s=$1 last;
}
}

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板