php - 带有 nginx 的 Codeigniter 为嵌套应用程序提供 404 错误

标签 php .htaccess codeigniter nginx

我们的第三方提供商在 codeigniter 站点内创建了一个 codeigniter 站点。

意思如下:

1:我们有标准的应用程序文件夹和 CI 案例文件夹。

2:在里面我们有 admin 文件夹,它是 CI 基础文件夹的副本。把它想象成有人通过将 CI 重命名为“admin”在 code igniter 中复制 codeigniter。

我们的 nginx.conf 如下:

worker_processes auto;
worker_rlimit_nofile 1035;
pid /usr/local/var/run/nginx.pid;


events {
        worker_connections 1024;
        multi_accept on;
        use kqueue;
}

http {

        include mime.types;

        server{
                listen 80;
               server_name localhost ;

                access_log  /usr/local/etc/nginx/logs/default.access.log  ;
                error_log  /usr/local/etc/nginx/logs/default.error.log  ;

                #root /Users/rishi/appiness/rishijfh;
                root /Users/rishi/appiness/JobsForHer-PHP;

                index index.php index.html;

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

                location ~ \.php$ {
                        include fastcgi_params;
                        include fastcgi.conf;
                        fastcgi_pass 127.0.0.1:9000;
                }




}

CI/application 文件夹的 .htaccess 文件包含以下内容:

<IfModule mod_rewrite.c>
       RewriteEngine on
       RewriteCond $1 !^(index\.php|images|robots\.txt)
       RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

CI/admin/application 文件夹下的 .htaccess 文件内容如下:

<IfModule mod_rewrite.c>
       RewriteEngine on
       RewriteCond $1 !^(index\.php|images|robots\.txt)
       RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

CI/应用程序工作正常但 CI/admin/应用程序抛出 404 错误。

我搜索了很多并在下面尝试过 https://www.quora.com/How-do-I-solve-CodeIgniters-404-not-found-error http://www.arifulhaque.com/codeigniter-htaccess-and-index-php-issues-solution/

没有一种解决方案适合我们。请帮忙。

最佳答案

这可能是因为“外部”CI 试图将管理员查找为 Controller ,而不是浏览器深入到文件夹中。

在实际重写之前,在“外部”CI(不是在应用程序文件夹中,而是在根目录中)尝试这些重写条件:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

它应该看起来像这样(在这里复制我的):

<IfModule mod_rewrite.c>

    RewriteEngine On

    # Removes trailing slashes (prevents SEO duplicate content issues)
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_METHOD} !POST
    RewriteRule ^(.+)/$ $1 [L,R=301]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L,QSA]

</IfModule>

<IfModule !mod_rewrite.c>

    ErrorDocument 404 /index.php

</IfModule>

关于php - 带有 nginx 的 Codeigniter 为嵌套应用程序提供 404 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36305471/

相关文章:

php - 如果数据存在则更新,否则插入新数据

javascript - Codeigniter 和 AJAX console.log(结果) 显示未定义

apache - 仅在 .htaccess 中的特定时间允许来自特定引用者的访问

apache2 在重写之前给出 404

php - PUT 方法不起作用(CodeIngiter + Codeigniter 休息服务器)

mysql - CodeIgniter 或 Ignited Datatables 中的长尾 where 子句

php - 使用有限的内存处理来自 mysql 的大型结果集

php - 将sql生成的php表中的字段发送到另一个php表单

php - 从 PHP 和 MySQL 的 3 个随机数据中选择 4 列

regex - 有关 htaccess 的书籍