1

私は 3 日間頭を悩ませ、すべてをググり、コード イグナイター フォーラムに参加し、スタック オーバーフローを上から下までチェックしました。

私がやりたいのは、URLからindex.phpを削除することだけです。私の問題に最も近い投稿に回答がありませんでした: 投稿

localhost/CodeIgniter私のメインページに行くと表示されます。リンクをクリックすると、ページが存在しないというエラーが表示されます。

404 Page Not Found

The page you requested was not found.

私が読んだすべてに基づいて、これが私の現在の構成です。

MAC OSX 10.8.3 MAMP CodeIgniter 2.1.3

私のルート ディレクトリは www/CodeIgniter/ です。CodeIgniter ルートにある .htaccess ファイルは次のとおりです。

#Deny from all
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /CodeIgniter/

    #Removes access to the system folder by users.
    #Additionally this will allow you to create a System.php controller,
    #previously this would not have been possible.
    #'system' can be replaced if you have renamed your system folder.
    RewriteCond %{REQUEST_URI} ^system.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]

    #When your application folder isn't in the system folder
    #This snippet prevents user access to the application folder
    #Submitted by: Fabdrol
    #Rename 'application' to your applications folder name.
    RewriteCond %{REQUEST_URI} ^application.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]

    #Checks to see if the user is attempting to access a valid file,
    #such as an image or css document, if this isn't true it sends the
    #request to index.php
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    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.
    # Submitted by: ElliotHaughin

    ErrorDocument 404 /index.php
</IfModule>

CodeIgniter の構成設定は次のとおりです。 uri_protocol のすべての設定を試しましたが、成功しませんでした

$config['index_page'] = '';
$config['uri_protocol'] = 'AUTO';

mod_rewrite が有効になっていること、および httpd.conf で AllowOverride が All に設定されていることを確認しました。

****更新なので、MAMPとcodeigniterを削除して、ゼロから始めました。以下の .htaccess ファイルを使用すると、localhost に移動すると、codeigniter フォルダーが表示されません。フォルダを参照しようとすると、次のエラーが表示されます。

    Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, you@example.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

エラーログを見たところ、以下のエラーがありました。

[Mon Apr 22 21:42:51 2013] [alert] [client ::1] /Users/me/Dropbox/www/codeigniter/.htaccess: <IfModule takes one argument, Container for directives based on existance of specified modules

phpinfo(); で mod_rewrite が有効になっていることを確認しました。

.htaccess ファイルを削除すると、フォルダーを参照してメイン ページを取得できますが、もちろんリンクは機能しません。どんな提案でも大歓迎です。

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /codeigniter/

    #Removes access to the system folder by users.
    #Additionally this will allow you to create a System.php controller,
    #previously this would not have been possible.
    #'system' can be replaced if you have renamed your system folder.
    RewriteCond %{REQUEST_URI} ^system.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]

    #When your application folder isn't in the system folder
    #This snippet prevents user access to the application folder
    #Submitted by: Fabdrol
    #Rename 'application' to your applications folder name.
    RewriteCond %{REQUEST_URI} ^application.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]

    #Checks to see if the user is attempting to access a valid file,
    #such as an image or css document, if this isn't true it sends the
    #request to index.php
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    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.
    # Submitted by: ElliotHaughin

    ErrorDocument 404 /index.php
</IfModule>
4

5 に答える 5

0

以下を.htaccessファイルに貼り付けるだけで機能します

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

$config['index_page'] = ''; を設定します。//config.php $config['uri_protocol'] = 'REQUEST_URI';//config.php

于 2016-12-05T22:27:54.653 に答える
0
DirectoryIndex index.php
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|robots\.txt)
RewriteRule ^(.*)$ index.php?/$1 [L]


内部構成ファイル:

$config['index_page'] = 'index.php';
$config['uri_protocol'] = 'REQUEST_URI'; //or 'QUERY_STRING'
于 2013-04-17T20:21:36.817 に答える
0

テスト目的で、htaccess ファイルをバックアップし、完全にクリアして、これを貼り付けます。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]

エラーなくサイトを閲覧できるかどうかを確認します。

于 2013-04-17T03:17:55.267 に答える
0

遅くなるよりはましですが、httpd.confファイルを変更する必要がありました。3回再起動した後、機能し始めました。多分これは他の誰かを助けることができます

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Order deny,allow
    Deny from all
</Directory>
于 2013-07-20T01:47:52.347 に答える