我想将 nginx 中 URI 的一部分放入变量中。目前我有这条规则。
if ( !-e /tmp/access_22092012_$cookie_PHPSESSID.tmp ) {
rewrite /folder1/folder2/(.*) /folder1/folder1.php?file=$1 last;
}
Run Code Online (Sandbox Code Playgroud)
请求就像
http://my.domain/folder1/folder2/22092012/index.html
http://my.domain/folder1/folder2/22092012/files/x.sfw
其中22092012也可以有其他数字。
我想22092012从 URL 中提取部分并将其放入变量中,然后文件中的内容存在上面的条件:
if ( !-e /tmp/access_$urlpart_$cookie_PHPSESSID.tmp ) {
rewrite /folder1/folder2/(.*) /folder1/folder1.php?file=$1 last;
}
Run Code Online (Sandbox Code Playgroud)
为什么我需要这个:我设置了登录保护来通过会话登录来保护文件。我的应用程序写入 tmp 文件,因此如果文件夹中有 100 个文件,则脚本不需要验证每个文件是否具有权限,也不需要为每个文件运行 php 工作程序。
这可能吗?
是的 - 您可以在 中使用带有“捕获”的正则表达式location,并在location块中引用它们,如下所示:
location ~ /folder1/folder2/(.*)/ {
if ( !-e /tmp/access_$1_$cookie_PHPSESSID.tmp ) { ... }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2631 次 |
| 最近记录: |