私は非常にのsymfonyに更新しようとしている従来のPHPアプリケーションを持っています。ファイルが存在する場合はApacheが要求を処理します。それ以外の場合はSymfonyフロントコントローラ経由でルーティングします
アプリケーションは現在、これと同様の構造を有する:
/www <-current web root
php_page1.php
php_page2.php
php_pagen.php
/dashboard
dashboard_page1.php
dashboard_page2.php
dashboard_pagen.php
ページは機能のフルなどのヘルパーファイルがある、と資産の完全ないくつかのフォルダにもありますが、それは本当に重要ではありません。したがって、特定のページにアクセスするには、ブラウザでdomain.com/php_page1.phpまたはdomain.com/dashboard/dashboard_page1.phpを指定してください...フロントコントローラはありません。すべてのページには直接アクセスします。
一言で言えば、一度にリファクタリングするのはあまりにも多いので、一度に1ページずつペースで行いたいと思っています。私が何をしたいか
はsymfonyの構造は、ここで現在何と共存しますので、私が今持っているものの上にsymfonyをインストールしている:
/www <-legacy
php_page1.php <-legacy
php_page2.php <-legacy
php_pagen.php <-legacy
/app <-symfony
/dashboard <-legacy
dashboard_page1.php <-legacy
dashboard_page2.php <-legacy
dashboard_pagen.php <-legacy
/src <-symfony
/web <-symfony (new web root)
.htaccess <-symfony (points to app.php)
app.php <-symfony (front controller)
私は正常にsymfonyのをインストールし、サンプルを移行しました従来のページオーバー(ウェブルートが移動したことに注意してください)。これは素晴らしいです。
問題は、最終的に、既存のページが存在する場合はApacheに、最後に存在しない場合はフロントコントローラ(app.php)を経由する必要があります。
ここで私が試したことがあります。
私は様々な.htaccessルールを試して、Apacheの/ wwwと/ www/dashboardのファイルを提供しようとしました。これらは失敗し、Symfonyは私にマッチするルートがないと言っています。
私はまた、Symfonyの$this->redirect('..\www\php_page1.php');
を試しました。これはsymfonyが "設定されたディレクトリの外にテンプレートをロードしようとしたようです"と言って失敗します。
/**
* @Route("/cvdashboard/{file}")
*/
public function cvdashboardAction($file) {
return $this->render("@dashboard/$file");
}
をそして小枝のパスを追加しました::
は最後に、私は、ルートとして/ダッシュボードを追加しようとしました
FileLoaderLoadException in FileLoader.php
ライン118:
twig:
...
paths:
'%%kernel.root_dir%/../dashboard':dashboard
これは、3つの例外をyealds
InvalidArgumentException in YamlFileLoader.php
ライン371:
ParseException in Inline.php
ライン108:
質問
だから私の質問は次のとおりです。 はどのように設定することができsymfonyの/ Apacheのように現在存在しているURLが呼び出された場合(すなわち、 domain.com/php_page1.php)それはSymfonyかApacheのどちらかを介して直接そのページを提供し、もし存在しなければ、Symfonyのフロントコントローラにリクエストを処理させますか?
EDIT
がここにあります。htaccessファイルは、私が現在持っている:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . app_dev.php [L]
これは私がのために定義されたルートを持っているのSymfonyとルート何のために働きます。問題は、それが/ www/web(新しいWebルート)にあることです。これはsymfonyがWebルートを望む場所です。 Webルートの外側にある/ wwwや/ www/dashboardのものにはアクセスしません。
.htaccessを使用して、Webルートから1レベル下のファイルを取得するか、symfonyがそれらのページを汎用のPHPスクリプトとして提供するようにします。
感謝を。私は実際にはすでに非常に似た.htaccessファイルを使用しています。問題はそれが/ www/webにあることです。私は/ wwwと/ www/dashboardから普通の古いPHPスクリプトを提供する必要があります。 – mcmurphy
'www'ディレクトリと' www/web'ディレクトリに異なる '.htaccess'ファイルを使うことができます。 – Dekel
Webrootを/ wwwにする必要がありますか? – mcmurphy