2010-05-22 53 views
0

是否可以將/web目錄設置爲webroot而不更改apache配置文件?使用symfony 1.4而不更改apache配置

我嘗試使用以下.htaccess代碼,但如果我去本地主機/模塊/,它顯示404錯誤。但是,如果我去本地主機/網絡/模塊/然後一切正常。

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteRule sf/(.*) lib/vendor/symfony/data/web/sf/$1 [L] 
    RewriteRule ^$ web/ [L] 
    RewriteRule (.*) web/$1 [L] 
</IfModule> 

回答

0

簡答:沒有。

位長:你必須編輯apache配置,至少讓它有權訪問web /目錄,所以即使你將你的web文件夾符號鏈接到/ var/www,它也不會工作。

+0

我的網站目錄路徑爲/ home/xx/public_html/web – Ragnis 2010-05-23 08:19:16

+1

那麼爲什麼不讓/ web/home/xx/public_html成爲webroot?把你的代碼放在/ home/xx中,編輯你的ProjectConfiguration來調用'$ this-> setWebDir'?如果有效,我會更新我的答案。 – Maerlyn 2010-05-23 09:57:59

+0

我把我所有的symfony文件都放到/ home/xx/private_html /並且只留下/ web文件夾內容到/ home/xx/public_html/ 但是現在我無法使它工作。 Symfony仍在從/ home/xx/public_html /文件夾中查找其文件。 – Ragnis 2010-05-23 17:40:27

0

這很安靜,類似於我的問題Symfony on virtual host (document root problem)

這是我.htaccess在項目的根目錄:

RewriteEngine On 
RewriteBase/  

RewriteCond %{REQUEST_URI} ^/images/ [OR] 
RewriteCond %{REQUEST_URI} ^/js/  [OR] 
RewriteCond %{REQUEST_URI} ^/css/ 
RewriteRule ^(.*)$ /web/$1 [L] 

RewriteCond %{REQUEST_URI} !^/web/ 
RewriteRule ^(.*)$ /web/index.php [QSA,L] 

這解決了我的問題,但symfony的嘗試生成每個URL(例如,使用url_for)從文檔根所以不是URL像domain.com/my-article它產生domain.com/web/my-article
我不得不稍微修改我的PatternRouting類,以修剪每個網址的/web前綴。我認爲這不是最好的解決方案,但它的工作原理。

另外,如果我想訪問後端應用程序,我必須始終調用/web/backend.php/,因爲我不想在.htaccess中有太多重寫規則。

如果你想看到我的擴展PatternRouting類源代碼,我將粘貼在這裏。

1

我喜歡這根:

RewriteEngine On 
RewriteBase/
RewriteRule (.*) ./web/$1 [L] 

和編輯Web /的.htaccess註釋掉了 'RewriteBase /' 線。

這使所有的mysite.com/aaaa/bbbb就像mysite.com/web/aaaa/bbbb

0

是的,這是可能的。將所有內容從web/up級別複製到文檔根目錄。編輯index.php以反映它包含的所有內容現在比當前目錄更接近它的一個級別(少一個../)。您不必編輯一個其他的Symfony文件。