2012-12-05 16 views
5

私は3台のサーバ、ローカルホストのApacheサーバ、テスト用のリモートサーバ、プロダクションライブサーバを持っています。Codeigniter、プロダクションサーバでルーティングが機能していません

私はそれらの3つすべてにcodeigniterとサイトの設定が同じで、 'index.php'のないlocalhostとtesting serversのルーティングでは100%動作します。ただし、プロダクションサーバーでは、URLにはデフォルトのコントローラ経由でホームページのみが表示されますが、デフォルト以外のすべてのルーティングルールは無視されているようです。

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

たとえば、本番サイトのURLが 'www.mysite.com/information'の場合、読み込まれるコンテンツはデフォルトコントローラのフォームになります。

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

これは私のhtacessファイルの内容です:これは私のルートの設定ファイルであるhttp://pastebin.com/cDaZVJ8A

http://pastebin.com/7Ewc2bwN

マイ$の設定[ 'index_page']は何も設定されています。

私は実際には動作しません。なぜなら、codeigniter自身の言葉ではすべてのサーバーで同じ設定が行われていて、mod_rewriteは運用サーバーで作業しているからです。

私は何をすべきか分かりませんが、どうしたら間違っているのか分かりますか?

+0

'routes.php'が' application/config/production'ディレクトリに存在するかどうかチェックしましたか?ファイルが存在する場合、 'application/config'ディレクトリ内のファイルを上書きします。 – Stanley

+0

@Stanley、プロダクションサーバー上の正しい場所に存在します。 – Nicekiwi

+0

@Stanley、何を待つ? configディレクトリ内にフォルダがありませんか? – Nicekiwi

答えて

6

これは、ある環境から別の環境へのコードネイターのインストールを頻繁に行う場合によく発生する一般的な問題です。私はなぜそれが発生するのかわからない、サーバーのOSやApacheの設定の違いかもしれませんが、解決策は頻繁に.htaccessファイル内のindex.phpのRewriteRuleに疑問符?を追加することです。

旧:

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

新:

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

私はこの問題を抱えたことは一度もありませんが、解決策を知ることは良いことです – m4t1t0

1

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

+0

私はその共有サーバーにアクセスできません。 – Nicekiwi

1
  1. .htaccessファイルに何か問題がありますか?

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

    私のプロダクションサーバーアプリケーションはWebルートディレクトリにありましたので、RewriteBase/で、私は/somethingでした。

  2. 私が大文字/小文字の問題に遭遇したとき、私は開発サーバー(Windows)から本番(Linux)にサイトを移動したときに愚かでした。

+0

私はそれが簡単だったと思う、あなたは質問のリンクからurselfの私のhtacessファイルを見ることができます。合ってます。 – Nicekiwi

+0

@Ezraを見てください。もう1つのヒントを追加しました。 – Kamil

0

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

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

関連する問題