Nginx重写文件在虚拟目录


nginx rewrite file inside virtual directory

我的文件夹结构如下我有一个名为docs的文件夹,其中有2个文件:all_docs.phplevel.php

all_docs有两个参数,我有这样的重写规则:

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

这使得像

这样的url成为可能
all_docs.php?title=fashion&lang=en

看起来像:

/doc-fashion-en/

问题是,我也想访问级别。php在doc文件夹但是重写后我不能,因为nginx请求:

不存在的/doc-fashion-en/level.php

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

如果没有成功,level.php有一些get参数需要传递这就是为什么我使用$args

如有任何帮助,不胜感激

这些重写规则应该适合您:

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

考虑使用+而不是*,当你确定至少应该有一个符号。事实上,^/doc-([^/]*)-([^/]*)/?$匹配/doc--。我不确定这是有意的