7

localhost Apache サーバー、テスト用のリモート サーバー、本番用のライブ サーバーの 3 つのサーバーがあります。

3つすべてとローカルホストに同じコードイグナイターとサイトセットアップをインストールし、「index.php」なしでルーティングするサーバーをテストすると、100%機能します。ただし、本番サーバーでは、(デフォルトのコントローラーを介して) ホームページのみが表示されるという URL の内容に関係なく、デフォルトのルーティング ルールを除いてすべてのルーティング ルールが無視されているようです。

ただし、index.php が URL に追加されている場合は、想定どおりに動作します。

たとえば、本番サイトの URL が「www.mysite.com/information」の場合、読み込まれるコンテンツはデフォルト コントローラからのものです。

しかし、本番サイトの URL が 'www.mysite.com/index.php/information' の場合、ロードされるコンテンツは 'information' コントローラーからのものです。

これは私の htacess ファイルの内容です: http://pastebin.com/cDaZVJ8A

これは私のルート設定ファイルです: http://pastebin.com/7Ewc2bwN

私の $config['index_page'] は何も設定されていません。

なぜそれが機能しないのか、コードイグナイター自体に関してすべてのサーバーで同じセットアップが行われていて、mod_rewrite が運用サーバーで機能しているのか、私には本当にわかりません。

どうすればいいのかわからないのですが、何が問題なのかを調べるにはどうすればよいですか?

4

4 に答える 4

8

これは、ある環境から別の環境にインストールされた codeigniter を移動するときによく発生する、非常に一般的な問題です。サーバーOSまたはApache設定の違いである可能性がありますが、解決策は多くの場合?、.htaccessファイルのindex.phpのRewriteRuleに疑問符を追加することです.

年:

RewriteRule ^(.*)$ index.php/$1 [L]

新しい:

RewriteRule ^(.*)$ index.php?/$1 [L]
于 2012-12-05T09:09:19.160 に答える
2

Apache 仮想ホストの構成を確認しAllowOverride All、ディレクトリ定義に含まれていることを確認します。

于 2012-12-05T08:32:28.350 に答える
1
  1. .htaccess ファイルに何か問題があるのでしょうか?

    RewriteBase が開発サーバーのディレクトリに設定されていたため、アプリケーションを運用サーバーに移動したときに問題が発生しました。

    私の本番サーバーアプリケーションでは、Webルートディレクトリにあったので、そうRewriteBaseあるべきで//somethingそこにありました。

  2. サイトを開発サーバー (Windows) から実稼働 (Linux) に移動したときに、大文字/小文字に関するばかげた問題が発生したことがあります。

于 2012-12-05T08:35:34.683 に答える
0

私も同じ問題を抱えていました。記事名を URL に変換する関数 (slugify) を使用していました。

localhost とサーバーで、この関数はわずかに異なる URL を返しました。

于 2014-11-22T10:25:10.427 に答える