nginx 位置块禁用 php 文件的呈现
nginx location block disables rendering of php files
我的 website.conf 中有这个 location
块:
location ~ ^/([^/?&:'"]+)$ {
try_files $uri @root_path;
}
这部分文件阻碍了 php 个文件的执行,它始终将它们作为下载提供。
- 如何从这个正则表达式中排除 *.php 文件?
- 这个正则表达式到底是什么意思?
- 在这种情况下,仅排除 *.php 文件是否更好?
如果有人能详细说明,我将不胜感激。
更多背景信息:我正在试用 jitsi-meet,我想向网站添加一些基于 php 的功能。
正则表达式 ^/([^/?&:'"]+)$
匹配任何以 /
开头并包含除 /
、?
、&
、[=15 之外的任何字符的任何内容=]、'
和 "
。
第一个字符很重要,因为它意味着它只会匹配包含单个路径元素的 URI(例如 /foo
和 /index.php
),但不会匹配包含另一个 [=11= 的 URI ](例如 /foo/
、/foo/bar
和 /foo/index.php
)。
其他字符可能是错误的,因为 ?
和 &
不太可能被 location
语句遇到,因为 Nginx 使用 normalised URI查询字符串已删除。
您不需要从这个正则表达式中排除 .php
。
以.php
结尾的URI通常由另一个正则表达式位置块处理(例如location ~ \.php$
)。
正则表达式位置块按顺序求值,直到找到匹配项,因此您需要确保 location ~ \.php$
块位于正则表达式位置 上方 阻止你的问题。
我的 website.conf 中有这个 location
块:
location ~ ^/([^/?&:'"]+)$ {
try_files $uri @root_path;
}
这部分文件阻碍了 php 个文件的执行,它始终将它们作为下载提供。
- 如何从这个正则表达式中排除 *.php 文件?
- 这个正则表达式到底是什么意思?
- 在这种情况下,仅排除 *.php 文件是否更好?
如果有人能详细说明,我将不胜感激。
更多背景信息:我正在试用 jitsi-meet,我想向网站添加一些基于 php 的功能。
正则表达式 ^/([^/?&:'"]+)$
匹配任何以 /
开头并包含除 /
、?
、&
、[=15 之外的任何字符的任何内容=]、'
和 "
。
第一个字符很重要,因为它意味着它只会匹配包含单个路径元素的 URI(例如 /foo
和 /index.php
),但不会匹配包含另一个 [=11= 的 URI ](例如 /foo/
、/foo/bar
和 /foo/index.php
)。
其他字符可能是错误的,因为 ?
和 &
不太可能被 location
语句遇到,因为 Nginx 使用 normalised URI查询字符串已删除。
您不需要从这个正则表达式中排除 .php
。
以.php
结尾的URI通常由另一个正则表达式位置块处理(例如location ~ \.php$
)。
正则表达式位置块按顺序求值,直到找到匹配项,因此您需要确保 location ~ \.php$
块位于正则表达式位置 上方 阻止你的问题。