Pbootcms二级目录伪静态编写教程
最近很少更新文章了,主要是懒了。标题一写,废话不说,直奔主题!
先来说一下背景,用Pbootcms做了个双语言的网站,架构是一个语言在根目录,另一个语言是在二级子目录,两个后台分开管理。为啥不用官方的多语言建站?因为SEO,还因为这样有个好处,数据库是两个,互不影响,一个传完数据直接复制一套改改模板就不用再添加数据了,省事!但是在做伪静态的时候,遇到问题了,子目录的伪静态不生效。按照官方的教程(因为用的宝塔环境,就以Nginx环境为例):
注意:Nginx中如果站点部署在二级目录,请对应修改重写规则, 如:二级目录为test则:rewrite ^/test/(.*)$ /test/index.php?p=$1 last;
按照这个思路,只有一个站在二级目录的话,这样改没问题,但是根目录也是pbootcms,也需要伪静态设置怎么办?
一开始我是这样设置的(一顿操作猛如虎,这样设置像二百五):
location / { if (!-e $request_filename){ rewrite ^/(.*)$ /index.php?p=$1 last; rewrite ^/test/(.*)$ /test/index.php?p=$1 last; } }
设置完发现子目录还是不生效,去掉根目录的写法,子目录生效了,但是根目录的伪静态又失效了,网上找了会也没找到个教程,但是搜索“if (!-e $request_filename)”时,却有些别的伪静态的写法启发了我,于是照虎画猫:
location / { if (!-e $request_filename){ rewrite ^/(.*)$ /index.php?p=$1 last; } } location /test/ { if (!-e $request_filename){ rewrite ^/test/(.*)$ /test/index.php?p=$1 last; } }
终于测试OK了!希望本文能帮助到遇到同类问题的朋友们~