使用nginx的代码点火器为嵌套应用程序提供404错误

时间:2016-03-30 10:00:41

标签: php .htaccess codeigniter nginx

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

这意味着:

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

2:在里面我们有admin文件夹,它是CI基本文件夹的副本。将其视为有人在代码点火器中复制codeigniter,将CI重命名为' admin'。

我们的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 /应用程序文件夹的.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 / aplication会抛出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/

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

1 个答案:

答案 0 :(得分:0)

可能是因为&#34;外部&#34; CI正在尝试将管理员作为控制器进行查找,而不是浏览器潜入该文件夹。

在&#34;外部&#34;中尝试这些重写条件。在实际重写之前的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>