0

私は何時間も試してきましたが、うまくいきませんでした。どこでも答えを探しましたが、私の問題を解決するものは何もないようです。

ここで説明されている解決策も試しました: Remove index.php in codeigniter 2.1.0。まったく運がありません。

config['index_page'] を '' に設定しました。

私の .htaccess はルート フォルダー (sys フォルダーと app フォルダーがある場所) にあり、次のように記述されています。

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

それでも、コントローラーのメソッドにアクセスできる唯一の方法は、URL にひどい index.php を使用することです。はい、私の apache conf では mod rewrite が有効になっています。

どんな助けでも信じられないほどいいでしょう。

編集

もう少し情報を追加します。関連性があるかもしれません。

  • ZendServer を使用しています。
  • 私は今、ローカルホストで働いています。
4

5 に答える 5

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

ZendServer での経験はありませんが、今夜、xampp を使用して (ZendServer なしで) localhost でこの問題が発生し、最終的に機能しました。

  1. httpd.conf をチェックして、「LoadModule rewrite_module modules/mod_rewrite.so」行がコメント化されていないことを確認してください。
  2. config.php を開き、$config['base_url'] = 'http://localhost/yourdirectoryname/' を設定します。
  3. 引き続き config.php で、$config['index_page'] = '' を設定します。
  4. index.php と同じディレクトリに .htaccess ファイルを作成します (私の場合、htdocs/yourdirectoryname)
  5. その .htaccess ファイルの内容は上記のとおりです
于 2012-11-24T17:16:37.713 に答える
1

私はコードイグナイターの経験がありませんが、正しく理解できれば、 /index.php/my-page のようなものをユーザーに提供しようとしています。

私が正しければ、次のようなことを試すことができます。

RewriteBase /                                 # make sure we always rewrite from within the root directory

RewriteCond %{REQUEST_FILENAME} !-f           # make sure the request is not to an existing file
RewriteCond %{REQUEST_FILENAME} !-d           # nor an existing directory
RewriteCond %{REQUEST_FILENAME} !^index\.php  # make sure we do only interpret requests that DO NOT start with index.php
RewriteRule ^(.*)$ index.php/$1 [L,QSA]       # interpret request as if it were to index.php/...

# make sure we do only interpret requests that DO start with index.php
RewriteRule ^index\.php/(.*)$ $1 [L,R,QSA]    # redirect user to new URL, which will be handled by the first rewriterule

これが機能するかどうかを通知してください

于 2012-11-07T15:52:17.433 に答える
1

これを試してみてください。私はこれを多くのホストでどこでも使用しました。チェックしてください:

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

十分でない場合は、config.phpファイルに移動して次の行を検索します。

|--------------------------------------------------------------------------
| URI PROTOCOL
|--------------------------------------------------------------------------
|
| This item determines which server global should be used to retrieve the
| URI string.  The default setting of 'AUTO' works for most servers.
| If your links do not seem to work, try one of the other delicious flavors:
|
| 'AUTO'            Default - auto detects
| 'PATH_INFO'       Uses the PATH_INFO
| 'QUERY_STRING'    Uses the QUERY_STRING
| 'REQUEST_URI'     Uses the REQUEST_URI
| 'ORIG_PATH_INFO'  Uses the ORIG_PATH_INFO
|
*/
$config['uri_protocol'] = 'AUTO';

私は使用しますが、おそらくそれをまたはAUTOに切り替える必要があります。試してみてくださいREQUEST_URIQUERY_STRING

于 2012-11-24T17:29:50.593 に答える
0

私はついにこれを解決することができました。@ddanurwenda に感謝します。私の問題を解決したのは、彼の書き換えルールだけでした。

私が見落としていた Apache 設定がありました: 私はこの行を (httpd.conf から) 変更しました:

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

以下に:

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Order deny,allow
    Deny from all
    Satisfy all
</Directory>

その構成により、htaccessファイルが読み取られなくなりました。

于 2012-12-03T14:11:03.180 に答える