0

codeigniterを使用したrewriterulesでWebページのURLを短くしようとしています。

.htaccessにアクセスしました:

RewriteEngine on
RewriteBase /ci/
RewriteRule ^([0-9a-zA-Z_-]+)?$ index.php/controller/method/$1

しかし、私のアプリケーションはすべてを無視しているようです。

置いた:

http://localhost/ci/variable

エラーページが表示されます:

オブジェクトが見つかりませんエラー404。

LoadModule rewrite_module modules/mod_rewrite.soコメントもありません。

私は単純なプロジェクトでそれを実行し、それが機能しているように見えますが、私のcodeigniterでは機能しません。

誰かがこの問題を解決するのを手伝ってもらえますか?

ありがとう。

解決済み:

Adding RewriteEngine on
RewriteRule ^([0-9a-zA-Z_-]+)?$ /ci/index.php/controller/method/$1 [L,R=301]
4

3 に答える 3

1

Controllerという名前のメソッドで名前が付けられたコントローラーがない限りmethod、この行は失敗します。

index.php/controller/method/$1

代わりに次のようにしてみてください。

RewriteRule ^(.*)/index/?$ $1 [L,R=301]

CodeIgniter がリクエストを処理する方法は/、区切り文字として使用するスクリプト名 (index.php) の後に発生するすべてのものを分割することです。次に、その配列に基づいてコントローラーの検索を開始します。私はあなたがControllerコントローラーを持っておらず、コントローラーも持っていないに違いないのでController_Method、CodeIgniter はすぐにあなたに舌を突き出し、協力を拒否します。

于 2013-03-12T14:58:25.207 に答える
0

ローカル サーバーのルート フォルダーに htaccess ファイルを配置してください。

すなわち。

WAMPがwamp/www/.htacessに入れた場合

または、XAMPP が xampp/htdocs/.htaccess に配置した場合

于 2013-03-12T14:53:54.260 に答える
0

/ci.htaccess、index.php など、すべてがフォルダーにある場合は、問題RewriteRuleなく動作するはずです。

がルート ディレクトリにある場合index.phpは、先頭にスラッシュを追加します

RewriteRule ^([0-9a-zA-Z_-]+)?$ /index.php/controller/method/$1

ルートディレクトリにもある場合.htaccessは、削除RewriteBaseして先頭に追加ciしますRewriteRule

RewriteEngine on
RewriteRule ^ci/([0-9a-zA-Z_-]+)?$ /index.php/controller/method/$1

これらのいずれも機能しない場合は、各ファイルの場所を正確に指定します。つまり、.htaccess はどこにあり、index.php はどこにありますか。

于 2013-03-12T15:47:37.327 に答える