2013-10-25 53 views
0

由於我們在同一個站點上有多個應用程序(以及與大項目相關的所有應用程序),因此我將多個應用程序放置在Web文件夾內,如下所示:如何將app.php和app_dev.php放入子文件夾

網/

| - 前端

| - 後端

| - API

每個人都應該有自己的app.php和app_dev.php。可以將前端的app.php和app_dev.php放在根目錄下,但是這樣可以打破我們試圖保留的好結構。

我想在我的.htaccess中使用這些規則

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^app_dev\.php.*$ frontend/app_dev.php [QSA,L] 

RewriteRule ^(.*)$ frontend/app_dev.php [QSA,L] 

看起來工作得很好,只是現在產生的各個環節都有前綴「前端」這樣的事實:abc.com/frontend /通常路由

無論如何告訴Symfony忽略前端部分在這種情況下?

+1

爲什麼不根據您的應用程序簡單地使用指向不同控制器的路由?我的意思是,這就是他們在這裏。 – nietonfir

回答

2

您需要覆蓋路由器的請求上下文基礎url。

添加到您的app/config/paramters.yml

parameters: 
    router.request_context.base_url:/

參見文檔章節Configuring the Request Context Globally

請注意,您需要使用此功能的symfony版本> = 2.2.0。

+0

非常感謝,這工作。一旦你知道如何,這很簡單。順便說一句,我想知道你是否有使用htaccess規則的經驗?在我上面的問題中,如果我註釋掉「RewriteRule^app_dev \ .php。* $ frontend/app_dev.php [QSA,L]」這一行,那麼一切正常,但否則前端/中的樣式表將無法正確加載。我在那裏插入那一行,希望能夠通過鏈接訪問app_dev.php mysite.com/app_dev.php – mr1031011

+0

我建議你不要在可公開訪問的域中使用app_dev.php頁面,因爲你會很容易地暴露合理的信息,如容器參數。更好地使用環境變量在'app.php'中的環境之間切換。在使用Apache時,有'SetEnvIf' ...因此,如果找到請求頭中的某個鍵/值對,則可以讓Apache設置環境變量(即'SYMFONY__DEV_MODE = true')。在您的開發環境中,您可以使用'SetEnv'將symfony始終顯示在某個本地域下的開發環境中。 – nifr

+0

謝謝你的建議nifr。其實應用開發將只用於本地環境,因爲每個人都已經習慣了在我們的本地環境中擁有該app_dev.php前綴,我只是想知道如果我可以在離開真正的文件在子文件夾中做同樣的事情。 – mr1031011

相關問題