【问题标题】:nginx rewrite file inside virtual directorynginx重写虚拟目录中的文件
【发布时间】:2016-10-22 15:48:37
【问题描述】:

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

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

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

这使得像这样的网址成为可能

all_docs.php?title=fashion&lang=en

看起来像:

/doc-fashion-en/

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

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

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

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

任何帮助将不胜感激

【问题讨论】:

  • level.php 的请求应该是怎样的? /doc-title-lang/level.php ?
  • 是的,确切地说,不包括 level.php?lang=us&volume=4 等参数

标签: php nginx url-rewriting


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2012-09-02
    • 1970-01-01
    • 1970-01-01
    • 2015-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-04
    • 2017-05-08
    相关资源
    最近更新 更多