nginx在虚拟目录中重写文件

时间:2016-10-22 15:48:38

标签: php nginx url-rewriting

我的文件夹结构如下 我有一个名为all_docs.php的文件夹,里面有2个文件: level.phprewrite ^/doc-([^/]*)-([^/]*)/?$ /doc/all_docs.php?title=$1&lang=$2 last;

all_docs有2个参数,我有这个重写规则:

all_docs.php?title=fashion&lang=en

这使得像

这样的网址成为可能
/doc-fashion-en/

看起来像:

/doc-fashion-en/level.php

问题是我还想访问doc文件夹中的level.php但是 在重写之后我不能因为nginx请求:

select news.title,news.id,news.agency,news.cat,news.regTime,news.img,news.view,news.like, newsagency.title as agency_title, site_cat.title as cat_title from news right join site_cat on news.cat = site_cat.id right join newsagency on news.agency = newsagency.id where news.regTime>=1426883460 and news.cat = 2 and news.agency =1 and ( (news.title like '%مذاکرات هسته ای%' or news.tag like '%مذاکرات هسته ای%' or news.des like '%مذاکرات هسته ای%') or ( (news.tag like '%مذاکرات%' or news.tag like '%مذاکرات%' or news.tag like '%مذاكرات%' ) and (news.tag like '%هسته%' or news.tag like '%هسته%' or news.tag like '%ةستة%' ) and (news.tag like '%ای%' or news.tag like '%ای%' or news.tag like '%اي%' ) ) or ( (news.title like '%مذاکرات%' or news.title like '%مذاکرات%' or news.title like '%مذاكرات%' ) and (news.title like '%هسته%' or news.title like '%هسته%' or news.title like '%ةستة%' ) and (news.title like '%ای%' or news.title like '%ای%' or news.title like '%اي%' ) ) or ( (news.des like '%مذاکرات%' or news.des like '%مذاکرات%' or news.des like '%مذاكرات%' ) and (news.des like '%هسته%' or news.des like '%هسته%' or news.des like '%ةستة%' ) and (news.des like '%ای%' or news.des like '%ای%' or news.des like '%اي%' ) ) ) order by news.regTime desc limit 0,15 不存在

我试过了 重写^ / doc - ([^ /] ) - ([^ /] )/ level.php /doc/level.php?$args;

没有成功,level.php有一些需要传递的get参数 这就是我使用$ args的原因。

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

这些重写规则适合您:

rewrite ^/doc-([^/]+)-([^/]+)/?$ /doc/all_docs.php?title=$1&lang=$2 last;
rewrite ^/doc-[^/]+-[^/]+/level.php(.*)$ /doc/level.php$1 last;

如果您确定至少应该有一个符号,请考虑使用+代替*。实际上,^/doc-([^/]*)-([^/]*)/?$匹配/doc--。不确定是否有意。