Wim*_*ink 5 configuration structure nginx
目前我正在运行具有以下目录结构(简化)的网络项目:
我想要做的是将服务器块中的根设置为:
root /project_folder/root/;
Run Code Online (Sandbox Code Playgroud)
但是当请求位置不存在时,我希望它将请求转发到project_folder/index.php。我尝试了以下方法:
try_files $uri ../index.php?$query_string;
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用。
对于以 $document_root/public/* 开头的请求也是如此,需要将其转发到: $document_root/../public/*
我确实通过在 /project_folder/root/ 文件夹中添加一个 index.php 来管理这个问题,其中包括 /project_folder/index.php 。对于公共文件夹,我创建了一个符号链接。我可能可以通过为位置 /public/ 添加别名来解决这个问题,但是我试图使我的配置尽可能通用。
我试图阻止将 project_folder 设置为根文件夹,因为它有时包含我不希望从网络访问的文件。引入“根”文件夹是新的,但我正在尝试尽可能高效地做到这一点。现有的 Web 项目还没有根文件夹。
我正在尝试做的事情是可能的,以及我如何才能实现这一目标。
提前致谢。
通常 PHP 文件是由location ~ \.php$块(或类似的块)处理的。我假设这index.php不是应用程序中唯一的 PHP 文件,并且要处理/root/目录结构中的 PHP 文件,该位置将需要使用root /project_folder/root.
您可以root为开始/public并使用命名位置执行根外index.php 文件的URI 指定不同的值。
像这样的东西:
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 ...;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7266 次 |
| 最近记录: |