0

Windows(WampServerを使用)でCodeIgniterとmod_rewrite(インデックスを抽象化するためだけ)を使用してアプリを作成しました。その環境では、アプリは問題なく動作し、すべてがスムーズに動作します。しかし、本番サーバー (Linux) に移植した時点で、書き換えプロセスが機能しなくなりました。

一見したところ、Linux ファイル システムの「大文字と小文字の区別」が問題のように思えました。しかし、エラーを含むファイルの名前を変更した後も、問題は解決しませんでした。

事実です。どの URL を呼び出しても、リライトは /index.php を呼び出し続けます。

ここに私の .htaccess コンテンツがあります:

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

私のアプリのフォルダー構造は次のとおりです。

doc_root
  - application
    -controllers
       -c.php

  - .htaccess
  - index.php
  (... everything else is codeigniter's default)
4

2 に答える 2

0
RewriteBase /
   RewriteCond %{ENV:REDIRECT_STATUS} 200
   RewriteRule .* - [L]



#'system' can be replaced if you have renamed your system folder.
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php/$1 [L]


#Rename 'application' to your applications folder name.
RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php/$1 [L]


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

ケンゾーの答えを基礎として、もう少し掘り下げて、上記の設定にたどり着きました。それだけで問題全体が解決したわけではありませんが、書き換え部分は完全に解決されました。全体の問題は、一部は書き換えエンジンが適切にリダイレクトすることを認識していないために発生し、もう 1 つはファイルシステムの「大文字と小文字の区別」が原因でした。それが最善の解決策かどうかはわかりませんが、メイン コントローラーとモデルへのシンボリック リンクを作成したところ、すべて正常に機能しました。シンボリックリンクアプローチが機能したため、コントローラーファイル名が「c.php」であるため、「C.php」シンボリックリンクを作成しました。大文字と小文字を区別せずにすべてのリクエストを実行できます。

于 2013-11-13T11:38:22.550 に答える