2010-05-11 56 views
3

我正在Symfony和本地主機(XAMPP)上開發一個應用程序我想模擬Web服務器上的相同條件。虛擬主機上的Symfony(文檔根目錄問題)

Web服務器的配置如下:

/www => mydomain.com 
/foo => foo.mydomain.com 
/bar => bar.mydomain.com 
... 

我要去把我的Symfony應用到/www direcotry所以就會有:

/www 
/www/apps 
/www/apps/frontend 
/www/apps/frontend/... 
/www/apps/backend 
/www/apps/backend/... 
/www/cache 
/www/config 
... and so on... 
/www/web 

的事情是,該文件根目錄仍然設置爲/www目錄,但Symfony期望它位於/www/web
當然,如果我打電話給http://mydomain.com/web,它會起作用,但我想你明白這是安靜的愚蠢解決方案。

所以我的問題是:有沒有什麼辦法可以改變/繞過使用.htaccess的默認文檔根設置?編輯:I solved it

+0

如果你解決你自己的問題,回答你的問題,並紀念這個問題的回答。 – 2013-06-05 13:35:19

回答

4

我對Symfony不太瞭解,但/web應該是文檔根目錄。由於安全原因,所有其他目錄應位於文檔根目錄之外,並避免URL中的/web部分用於其他目錄。但看起來你已經知道了。

如果您可以編輯Web服務器的配置,請嘗試反映並將DocumentRoot設置爲Web目錄。

如果你不能做到這一點:這是不可能改變的.htaccess文件DocumentRoot但它有可能讓他們去/web內部使用mod_rewrite重寫所有請求。這很爛,但如果你不能影響DocumentRoot,可能是最好的解決方案。

我不是mod_rewrite大師,所以我不能提供一個例子(我將不得不先測試它,現在我不能這樣做),但我相信有人會。也許在您的問題中添加mod_rewrite標記。

更新:未經測試,但應該工作。放入.htaccess文件/www

RewriteEngine on 
RewriteBase/

RewriteCond %{REQUEST_URI} !^/web/ 
RewriteRule .* /web/%1 [QSA] 

你就那麼需要改變你的配置文件來使用,而不是http://www.domain.com/當然的http://www.domain.com/web/

我不能說這是否會干擾Symfony端的任何其他.htaccess規則 - 您必須嘗試。

0

我你有手的Apache配置,更好的是從/www移動文檔根目錄/www/web在你的虛擬主機配置,並允許PHP(如果open_basedir配置指令限制)來訪問整個/www目錄。

+0

這正是我所不能的。我從來沒有見過任何共享虛擬主機,你可以在哪裏修改Apache配置:) – martin 2010-05-11 14:10:43

+0

好吧,我們已經做了一次與共享主機一起去除公共網絡目錄,將所有的sf項目放入共享主機root,然後重新創建www dir帶有一個以web /目錄爲目標的符號鏈接,但不知道是否可以添加符號鏈接 – Benoit 2010-05-11 15:30:11

0

更改symfony的方式預計將被命名爲您的目錄:

// config/ProjectConfiguration.class.php 
class ProjectConfiguration extends sfProjectConfiguration 
{ 
    public function setup() 
    { 
    $this->setWebDir($this->getRootDir().'/www/or/whatever/directory'); 
    } 
}