2010-12-14 8 views
0

最も簡潔な方法使用している場合のみ:のSymfony 1.4ルーティングの問題の手で問題を要約するのindex.phpとmod_rewriteの

  • 開発が終わって、そしてすべてのものが開発中frontend_dev.phpに対して実行し、

    をテストしていたが

    これは、すべてのURLがあったことを意味しますserver.com/frontend_dev.php/module/action/parm

  • は環境を切り替え、生産手段への移行、そしてthusly INDEを使用してx.php代わり
    server.com/index.php/module/action/parm

  • 生産への移行の一部は、URLの「index.phpを」の部分が消える作るためにApache2の下のmod_rewriteを使用しています:まだ
    server.com/module/action/parmはまだURLが実際のindex.php部分O/W登場しているが、symfonyのルーティングが今不平を言っているのindex.php

  • に対して送られ、機能して
    つまり、goal/indexにルーティングするserver.com/goals
    [火12月:(リライトを介して)明示的なコントローラを使用していない - -

    server.com/index.php/goals明示的なコントローラとしてfrontend_dev.phpまたはindex.phpをを使用して完全に細かいです14十二時59分51秒2010] [エラー] [クライアント75.16.181.113]空のモジュールおよび/またはアクションURLを解析した後、 "/目標/"(/)

私は書き換えが実際にある確認しました書き換えを存在しないものに変更してindex.phpにルーティングする:
[2010 12月14日午後01時05分43秒火] [エラー] [クライアントは75.16.181.113] '/opt/www/projects/adam/web/index2.php' スクリプトが見つからないか、できない

のstatします私はfrontend_dev.phpへの経路変更を試みましたが、symfonyからより多くのデバッグ情報が提供されていますが、どれも有用ではありません:

404 |見つからない| sfError404Exception "/ goals /"(/)URLを解析した後のモジュールまたはアクションが空です。
SF_SYMFONY_LIB_DIR /コントローラ/ sfFrontWebController.class.phpライン44における スタックトレースで
1()... sfFrontWebController-で
2>ディスパッチ()SF_SYMFONY_LIB_DIR/UTIL/sfContext.class.phpライン170インチ.. SF_ROOT_DIR /ウェブ/ frontend_dev.phpライン13でsfContext-で
3>派遣()...

私は.htaccessファイル内でRewriteBaseオプションを使用してみましたが、それはいずれも解決しません、コントローラの設定行でtrue/falseを変更することはありません。

なぜ私たちが混乱しているのか、私たちを解決に導くことができるかを理解するのに十分です。

以下は現在のものです。htaccessファイルとインデックス/フロントエンドの設定行

のindex.php:

$構成=にProjectConfiguration :: getApplicationConfiguration( 'フロントエンド'、 'PROD'、false)を;

Frontend_dev.php:

$構成=にProjectConfiguration :: getApplicationConfiguration( 'フロントエンド'、 'DEV'、TRUE);

.htaccessファイル:あなたが #RewriteBase /私たちはすべてスキップ

#を仕事にトラブル #取得no_script_nameを持っている場合は

#オン

RewriteEngineは、次の行のコメントを解除しました。somethingのファイル #RewriteCond%{REQUEST_URI} .. + $ #RewriteCond%{REQUEST_URI}!!.html $ #RewriteRule * - [L] .htmlのバージョンはここ(キャッシュ) するRewriteRule^$ index.htmlの[QSA] のRewriteRule ^([^。] +)$ $ 1.htmlであれば、我々はチェック

# [QSA] するRewriteCondの%{REQUEST_FILENAME}!-f

#いいえ、私たちはフロントウェブコントローラ するRewriteRule ^にリダイレクト(。*)$のindex.phpを[QSA、L]

+0

リクエストが正しく書き換えられたときにsymfonyがルートを不満に感じるのは奇妙なようです - あなたはindex.php経由であなたのブラウザに直接ルート設定をダンプしようとしましたか?キャッシュを手動でクリアすることは可能でしょうか?また、index2.phpに書き直して、クエリを出力させてください。 – cvaldemar

+1

routing.ymlを投稿できますか? – Vojta

答えて

0

ようこそスタックオーバーフローする

あなたは "index.php"と "index"ルートを混同しているかもしれませんか?

これらのURLは理論的にすべて動作します。

server.com/frontend_dev.php/goals/index 
server.com/index.php/goals/index 
server.com/goals/index 
server.com/goals 

server.com/goals/などの末尾にスラッシュが、働くかどうかは覚えていないことができます。そこには問題があります。

+0

後ろにスラッシュを入れてはいけません... – Vojta

1

仮想ホストのconfig内のSymfonyのWEBフォルダの 'AllowOverride'をALLに設定すると、この問題が解決されました。