0

CI が持っている URL トリックを利用できるように、index.php を削除するにはどうすればよいですか? 「index.php」を削除すると、必要なクラスがコントローラーに存在する場合でも、404 エラーまたは 403 が発生します。

現在、ルートにある私の .htaccess は次のとおりです。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

config.php のその他の CI 仕様:

$config['index_page'] = '';

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

rewrite_module が有効になっています。

httpd.conf で:

<Directory />
Options FollowSymLinks
AllowOverride None
Order Allow,Deny
Allow from all
</Directory>

編集:明確にするために、アプリの「ホームページ」にアクセスできます(http://localhost/projectfolder)。ただし、特定のコントローラー ( http://localhost/projectfolder/admin) にアクセスすると、機能しません。しかし、index.php がホストとコントローラ ( http://localhost/projectfolder/index.php/admin) の間にある場合は機能します。間にある「index.php」を解決しようとしています。

4

4 に答える 4

0

localhostを使用している場合、$ _SERVER['DOCUMENT_ROOT']はwampまたはxamppフォルダーになります。プロジェクトフォルダ名は含まれません。

したがって、プロジェクトフォルダ名が「test」である場合は、htaccessを次のように記述する必要があります。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /test/index.php/$1 [L]

最後の行に「test/」を追加する必要があり、URLにindex.phpを追加する必要はありません。これがうまくいくことを願っています。

于 2013-02-23T05:42:26.503 に答える
0

あなたの質問を数回読んだ後、それはついに理にかなっています。以下のようにRewriteBaseを追加する必要があると思います。

RewriteEngine on
RewriteBase /projectfolder/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
于 2013-02-23T23:41:30.027 に答える
0

Wing Lian のコメントを拡張します。

index.php ファイルを物理的に削除しません。ディレクトリのリストが拒否された (そして index.php が存在しない) ため 403 が返され、コントローラ/メソッドの URL が物理的に存在しないため 404 が返されます。

CodeIgniter の index.php を元の場所に戻せば問題ありません。この行:

$config['index_page'] = '';

index.php の「削除」が重要な部分です。この空白を使用すると、CodeIgniter の url/uri ヘルパー関数はindex.phpURL を挿入しません。

詳細については、適切な回答base_urlを参照してください。

于 2013-02-22T16:54:47.143 に答える
0

mod_rewrite が有効になっていることを確認してください。また、このような httpd.conf を試してください

<Directory /youdirectory path>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
</Directory>

CodeIgniter の URL の設定も確認してください。

于 2013-02-22T16:14:10.383 に答える