1

我已经在 codeigniter 中实现了一个 php 应用程序,现在想将它部署到 nginx 服务器。在部署之前,我使用 MAMP 服务器检查了本地主机上的 nignx 配置。它工作正常。但是,此配置不适用于实时服务器。作为 nginx 的初学者,我不明白这里的错误在哪里。在实时服务器中,我无法写入主 nginx.conf 文件。我的应用程序“abc”有一个单独的配置文件,如“abc”。我所有的应用程序文件都在“abc/xyz”目录下。这是我的示例配置,

location /abc {
root /srv/www/htdocs/apps/;

index index.html index.htm index.php;


location /xyz {
    try_files $uri $uri/ /abc/xyz/index.php;
}

location ~ \.php(\/(\w+))*$ {
    try_files $uri =404;
    rewrite (.+)\.php(\/(\w+))*$ $1.php break;

    include /etc/nginx/fastcgi_params;

    fastcgi_index index.php;
    fastcgi_pass unix:/var/run/php-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

}

在这里,我可以看到我的欢迎页面https://myapplication/abc/xyz。但是,如果我想浏览其他页面,例如https://myapplication/abc/xyz/other_pages,它会显示“404 Page not found”。我已经检查了其他解决方案,但在这种情况下它们都不起作用。在此先感谢您的帮助!

4

2 回答 2

0

location /xyz块嵌套在块内location /abc。需要嵌套块来处理前缀为/abc/xyz.

如果您的块^~` 修饰符周围还有其他正则表达式块。 locationlocation /abc, you should use the

例如:

location ^~ /abc {
    ...
    location /abc/xyz {
        ...
    }
    ...
}

有关更多信息,请参阅此文档

于 2018-11-22T15:32:54.870 回答
0

抱歉回复晚了。这实际上是一个非常愚蠢的错误。我的控制器页面名称是小字符。这就是它不起作用的原因。我的配置没问题。控制器页面的第一个字母应为大写字符。例如,我的控制器名称是 Home。所以我的 php 文件名必须是 Home.php 而不是 home.php。

于 2019-01-06T19:38:58.820 回答