Nginx 未将重写传递给 PHP-FPM

Nginx 未将重写传递给 PHP-FPM

我有以下针对 nginx 的重写规则。

规则似乎无法正常运行,例如游戏规则应该重写http://thegamesdb.net/game/2/http://thegamesdb.net/index.php?tab=game?id=2悬停,当我导航到 /game/2/ 时,浏览器正在下载一个名为的文件download

我的重写规则如下:

# nginx configuration
    location /game {
        rewrite ^/game/([0-9]+)(/?)$ /index.php?tab=game&id=$1 break;
        rewrite ^/game-edit/([0-9]+)(/?)$ /index.php?tab=game-edit&id=$1 break;
    }
    location /search {
        rewrite ^/search/([a-z0-9\-\ /\+]+)(/?)$ index.php?tab=listseries&string=$1&function=Search break;
        rewrite ^/search(/?)$ /index.php?tab=listseries&function=Search break;
    }
    location /browse {
     rewrite ^/browse/([0-9+]*)(/?)$ /index.php?tab=listplatform&stringPlatform=$1&function=Browse+By+Platform break;
    }
    location /platform {
        rewrite ^/platform/([0-9]+)(/?)$ /index.php?tab=platform&id=$1 break;
        rewrite ^/platform/([a-z0-9\-]+)(/?)$ /index.php?tab=platform&alias=$1 break;
        rewrite ^/platform-edit/([0-9]+)(/?)$ /index.php?tab=platform-edit&id=$1 break;
    }
    location /favorites {
        rewrite ^/favorites(/?)$ /index.php?tab=favorites break;
    }
    location /message {
    rewrite ^/message/([0-9]+)(/?)$ /index.php?tab=message&messageid=$1 break;
    }
    location /adminstats {
        rewrite ^/adminstats/([a-z0-9\-]+)(/?)$ /index.php?tab=adminstats&statstype=$1 break;
    }
    location /blog {
        rewrite ^/blog(/?)$ /blog/ break;
    }
    location /wiki {
        rewrite ^/wiki(/?)$ /wiki/ break;
    }
    location /forums {
        rewrite ^/forums(/?)$ /forums/ break;
    }
    location /phpmyadmin {
        rewrite ^/phpmyadmin(/?)$ /phpmyadmin/ break;
    }
    location / {
        rewrite ^/([a-z0-9\-\ /\+]+)(/?)$ index.php?tab=$1 break;
        if (!-e $request_filename){
         rewrite ^(.*)$ /index.php break;
        }
    }

我看不出规则有什么问题,我是否遗漏了什么?

顺便说一句,我正在使用 Ajenti-V,上述规则已输入到 Ajenti-V 网站的自定义配置面板中。

更新:

看来我当前的重写规则需要路由到它们,php-fpm因为它们当前被视为静态文件。

我该如何修改上述代码来实现这一点?

答案1

您没有位置块将 php 文件请求转发到处理后端。

为 php 文件添加位置块并使用 nginxfastcgi_模块放入其中,然后将重写转换为 php 文件,从breaklast

您可以找到很多有关服务器故障的示例:搜索

更新:按照评论中的要求修复根位置块。

您的正则表达式已经匹配/,因此/?永远不会匹配任何内容,例如/stats/。您必须设置两个重写规则:

location / {

    rewrite "^/(.*)/$" /$1;
    rewrite "^/([- +a-z0-9/]+)$" /index.php?tab=$1 last;

    [ ... ]


}

相关内容