NGINX将请求重写到根目录以外的文件
目前,我正在使用以下目录结构(简化)运行WebProject:NGINX将请求重写到根目录以外的文件,nginx,configuration,structure,Nginx,Configuration,Structure,目前,我正在使用以下目录结构(简化)运行WebProject: 项目文件夹/ 公开的/ 根/ index.php 我要做的是将服务器块中的根设置为: root /project_folder/root/; 但是当请求位置不存在时,我希望它将请求转发到project_folder/index.php。我尝试了以下方法: try_files $uri ../index.php?$query_string; 但这似乎不起作用 同样,以$document_root//public/*开头的请
- 项目文件夹/
- 公开的/
- 根/
- index.php
root /project_folder/root/;
但是当请求位置不存在时,我希望它将请求转发到project_folder/index.php。我尝试了以下方法:
try_files $uri ../index.php?$query_string;
但这似乎不起作用
同样,以$document_root//public/*开头的请求也需要转发到$document_root//public/*
我确实通过在/project_文件夹/root/文件夹中添加index.php来管理它,其中包括/project_文件夹/index.php。对于公用文件夹,我创建了一个符号链接。我可能可以通过为location/public/添加一个别名来解决这个问题,但是我正在尽可能地保持配置的通用性
我试图阻止将project_文件夹设置为根文件夹,因为它有时包含我不希望从web访问的文件。引入“root”文件夹是新的,但我正试图尽可能高效地实现这一点。现有的WebProject还没有根文件夹
我想做的是可能的,我怎样才能做到这一点
提前感谢。通常PHP文件由
位置~\.PHP$
块(或类似块)处理。我假设index.php
不是应用程序中唯一的php文件,要在/root/
目录结构中处理php文件,该位置将需要使用root/project\u folder/root
您可以为以/public
开头的URI指定不同的根
,并使用命名位置执行out of root index.php文件
大概是这样的:
root /project_folder/root;
location / {
try_files $uri $uri/ @index;
}
location /public {
root /project_folder;
}
location @index {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /project_folder/index.php;
fastcgi_pass ...;
}
location ~ \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass ...;
}
添加别名很简单:
location /public {
alias /absolute/path/to/public;
}
这个例子给了我很多东西。我设法删除了公共符号链接,还设法在命名位置的帮助下删除了索引文件。非常感谢。