背景:

公司域名 z.yb.com 下有多个子项目目录结构大致是 z.yb.com/own/xys | z.yb.com/2017/abc | z.yb.com/2018/def 有二级也有三级目录,应开发需求某项目访问地址是:z.yb.com/own/xys/index.php/admin/login 需要把 index.php隐藏为 z.yb.com/own/xys/index/admin/login 进行访问


借鉴网上其他博客的写法,设定以下三种场景:

场景一
将 http://www.abc.com/index.php/front/index/index
重写成 http://www.abc.com/a.html
场景二
将 http://www.abc.com/index.php/front/index/parse?name=itboy&age=18
重写成 http://www.abc.com/parse-itboy-18.html
场景三(同一域名下,需要匹配随时新增的二三级目录,并隐藏index.php的.php后缀)
将 http://z.yb.com/own/xys/index.php/admin/login  以及 http://z.yb.com/2018/gdhp/index.php/login
重写成 http://z.yb.com/own/xys/index/admin/login 以及 http://z.yb.com/2018/gdhp/index/login

建议在nginx/conf目录下新建rewrite.conf配置文件中编写伪静态规则,写完后在域名.conf文件中插入rewrite.conf文件即可(用include rewrite.conf插入)
楼主的nginx配置文件如下:

server
    {
        listen 80;
        server_name z.yb.com;
        index index.html index.php index.htm index.php default.html default.htm default.php;
        root  /var/www/apps/z.yb.com;
        include rewrite.conf;

        include none.conf;
        error_page   502   /502.html;
        include enable-php-pathinfo.conf;

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }

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

        location ~ /\.
        {
            deny all;
        }

        access_log  /var/www/wwwlogs/z.yb.com.log;
        error_log  /var/www/wwwlogs/error.z.yb.com.log;
    }

rewrite.conf文件内容如下:

location /
{
		#场景一
		#http://www.abc.com/index.php/front/index/index 变成 http://www.abc.com/a.html
		rewrite a.html /index.php/front/index/index last;
		#场景二
		#http://www.abc.com/index.php/front/index/parse?name=itboy&age=18 变成 http://www.abc.com/parse-itboy-18.html
		rewrite parse-(\w+)-(\d+).html /index.php/front/index/parse/name/$1/age/$2 last;
		#场景三
		#http://z.yb.com/own/xys/index.php/admin/login  以及 http://z.yb.com/2018/gdhp/index.php/login 变成 http://z.yb.com/own/xys/index/admin/login 以及 http://z.yb.com/2018/gdhp/index/login
        rewrite ^/(\w+)/(\w+)/(.*)$ /$1/$2/index.php?s=$3 last;  #针对own目录伪静态规则,$1对应(\w+)部分,$2对应第二个(\w+)部分,$3对应(.*)部分,$代表直至最后
        rewrite ^/(\d+)/(\w+)/(.*)$ /$1/$2/index.php?s=$3 last;  #针对后期的2018下的子项目伪静态规则
}
说明:

其实都是很简单的对号入座原理而已,拿场景二来说明,第一个正则(\w+)对应的就是$1,第二个正则(\d+)对应的就是$2,另外,\w是数字字母下划线的意思,\d是数字的意思 +是最少一个{1,} 1到无穷大{1,3} 这样是1-3位数。


如文章对您有帮助,请打开支付宝扫码领取红包,就当做对作者的支持,谢谢
这里写图片描述