当前位置: 首页 > 知识库问答 >
问题:

NGINX:如何为子文件夹的/index.php提供服务?

昝欣可
2023-03-14

我有一个遗留的php websiste,它已经用nginx(和php 7.4)迁移到一个新的服务器

我的nginx只有这个

server {
    listen 80;

    server_name domain.tld;

    root /var/www/domain.tld;

    error_log   /var/log/nginx/domain.tld-error.log  warn;
    access_log  /var/log/nginx/domain.tldt-access.log combined;

    client_body_buffer_size     10M;
    client_max_body_size        10M;

    location / {
        try_files $uri /index.php?$args;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
        fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
    }
}

如果我可以访问mydomain.tld,那么它可以正确地服务mydomain.tld/index.php

但是如果我访问mydomain.tld/subfolder或mydomain.tld/subfolder/,它就不能像我所期望的那样为mydomain.tld/subfolder/index.php提供服务

我做错了什么?

共有1个答案

姬经义
2023-03-14

我决定修改丹尼尔W

我将location/块移动到location~\.php$

但我并没有删除首字母/,我还添加了$uri

location ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/run/php/php7.4-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
    fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
}


location / {
    index index.php;
    try_files $uri $uri/index.php?$args;
}

如果我会发现一些陷阱,我会更新我的答案

 类似资料:
  • 我有以下文件夹结构为我的应用程序 这是我的nginx.conf 这就是我一直犯的错误 页面显示正确,我只是可以在子文件夹中到达api资源。你能帮我找出我做错了什么吗?如果您需要任何额外的信息,请让我知道,我会提供 非常感谢。

  • 嗨,我需要一些关于快车如何处理路线的帮助。 在设置我的express应用程序时,我有以下内容: 接下来,我挂载一些api路由: 但是,当前端通过api路由请求数据时,例如在'localhost:3000/api/things',我在Express debug日志中看到,在某个时刻(不确定何时)它实际上尝试将此请求作为静态文件提供服务,例如: 即使这个文件夹不存在于'public'中,应该由我的AP

  • 问题内容: 我有一个具有以下结构的Web应用程序: 我已经设法使用nginx和wsgi运行Web应用程序,但是问题是没有提供静态文件,我的意思是,当我转到它们的URL时,服务器找不到它们。它给我404。 这是我的nginx配置文件部分: 缺少什么吗? 问题答案: 将此添加到你的nginx配置 用你应用的绝对路径替换时,你应该注意它不包含静态目录,并且其中的所有内容都将存储在中。

  • 我一直在处理将一个站点从Apache迁移到Nginx的过程,我快要失去理智了。虚拟主机不想提供静态资源(css、js等),我似乎不知道为什么。服务器块看起来像这样: 我错过了什么?我知道这是因为我对Nginx缺乏经验,但任何建议都将不胜感激。 谢谢 更新 这似乎与我以前遇到麻烦的化名有关。如果我将我的文档根指向别名位置(),并尝试呈现没有别名的静态内容,它会呈现良好的效果。一旦我在网址中输入别名.

  • 问题内容: 可以说我有一条类似的路径: 该路径包含两个文件夹…让我们说 和 我想配置nginx来访问: 该文件夹上的文件夹(例如http://example.org/)上有一些.html文件。 文件夹(例如http://example.org/manage)上,在这种情况下,此文件夹包含Slim的PHP框架代码- 这意味着index.php文件位于子文件夹中(例如/ var / www / mys

  • 问题内容: 我当前的nginx配置是这样的: 我对nginx非常陌生,但是至少我知道nginx在提供静态文件方面比node / express好。如何配置服务器,以便Nginx提供静态文件? 问题答案: 我使用以下新配置解决了该问题: 感谢以下Stack Overflow帖子:

  • 问题内容: 我正在尝试查看特定文件夹中的更改,然后,如果其中发生任何添加/修订/删除,则需要获取该文件夹及其子文件夹中所有文件的更改类型。我正在为此使用,但它仅监视单个路径,不处理子文件夹。 这是我的方法: 就像我之前说过的,我只获取所选路径中文件的日志,并且我想查看所有文件夹和子文件夹文件,例如: 范例1: 范例2: 有没有更好的解决方案? 问题答案: A 仅监视您注册的S。它不会递归地通过这些

  • 问题内容: 这是我的项目文件夹 这是我index.js中的静态文件配置 这是我的index.html 这是我的nginx配置 但是我在所有脚本上都得到404。另一个奇怪的是,这些文件上的mime-type设置为 我在这里做错了什么? 我有一个项目,该项目具有相同的项目结构,并且具有相同的配置,但它适用于此项目,在这种情况下不起作用。 问题答案: 您无需配置Nginx 和 Express即可提供静态