3

ルーティングに問題があります。デフォルトのコントローラー (mysite.com) は機能しますが、他のコントローラー (mysite.com/dashboard など) を試してみると、CodeIgniter ではなく、サーバー ベースの 404 になります。現時点では、routes.php ファイルに 2 つのパスしかないため、非常に紛らわしいです。これが、routes.php ファイルのコメントされていないセクションです。

$route['404_override'] = '';

$route['default_controller'] = 'pages/view';
$route['(:any)'] = 'pages/view/$1';

私のコントローラーは /application/controllers/pages.php にあります。

.htaccess の問題ではないと思います (デフォルトのコントローラーにアクセスできるため) が、ここに私の .htaccess ファイルがあります。

RewriteEngine On
RewriteCond $1 !^(index\.php|styles|scripts|images|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1

#<IfModule mod_gzip.c>
#    mod_gzip_on       Yes
#    mod_gzip_dechunk  Yes
#    mod_gzip_item_include file      \.(html?|txt|css|js|php|pl)$
#    mod_gzip_item_include handler   ^cgi-script$
#    mod_gzip_item_include mime      ^text/.*
#    mod_gzip_item_include mime      ^application/x-javascript.*
#    mod_gzip_item_exclude mime      ^image/.*
#    mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
#</IfModule>

編集

ページコントローラーは次のとおりです。

<?php

        class Pages extends CI_Controller {

        public function __construct()
        {       
                //Construct it's parent
            parent::__construct();

            //Check login
            //$this->load->model('pages_model');
        //$this->pages_model->getLoginStatus();

    }


    public function view($page = 'dashboard')
    {

        //If the file doesn't exist
        if ( ! file_exists('/var/www/vhosts/mysite/httpdocs/library/application/views/pages/'.$page.'.php'))
        {
            // Whoops, we don't have a page for that!
            show_404();
        }       

        $data['title'] = ucfirst($page); // Capitalize the first letter

        //Load all necessary views
        $this->load->view('templates/head', $data); 
        $this->load->view('templates/header', $data);
        $this->load->view('pages/'.$page, $data);
        $this->load->view('templates/footer', $data);

    }

}

?>
4

3 に答える 3

4

ちょうど今同じ問題がありました.htaccessファイルを作業ディレクトリのルートに移動する
だけで、アプリケーションフォルダから取り出します

于 2014-08-12T18:00:09.403 に答える
2

これは、すべてのプロジェクトで使用する htaccess ファイルです。

Options -Indexes
Options +FollowSymLinks

# Set the default file for indexes
DirectoryIndex index.php

<IfModule mod_rewrite.c>

    # activate URL rewriting
    RewriteEngine on


    # do not rewrite links to the documentation, assets and public files
    RewriteCond $1 !^(images|assets|uploads|captcha)

    # do not rewrite for php files in the document root, robots.txt or the maintenance page
    RewriteCond $1 !^([^\..]+\.php|robots\.txt|maintenance\.html)

    # but rewrite everything else
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>

    # If we don't have mod_rewrite installed, all 404's
    # can be sent to index.php, and everything works as normal.

    ErrorDocument 404 index.php

</IfModule>  

次に、config.php ファイルで次のことを確認します。

  $config['index_page'] = '';
于 2012-05-03T05:38:21.803 に答える
0

最近、サーバー上の PHP バージョンを 7.0 から 7.2 にアップグレードしました。しかし、私の CodeIgniter Routing は、そうすると動作しなくなりました。すべてのリクエストがブラウザ コンソールで 300 エラーを返していました。

PHP 7.0 に戻すことで問題を解決しました。

于 2018-03-12T13:02:47.783 に答える