2014-04-30 107 views
0

以下.htaccess能夠允許我的symfony項目域在URL中按照預期在app.php之下提供服務。唯一的問題是它打破了所有其他(非symfony相關的)URL並導致內部服務器錯誤。Symfony htaccess隱藏app.php

現在,從服務器上刪除.htaccess文件後,我的所有域都可以正常工作,但與symfony綁定的項目必須使用URL中的app.php訪問?

是否可以修改以下.htaccess以重寫symfony網址到URL中不需要app.php,同時仍然允許所有其他URL(不綁定到symfony)成功訪問?

不確定這是否需要,但假設綁定到symfony的域是www.apples.com

在此先感謝!

<IfModule mod_rewrite.c> 
    Options +FollowSymlinks 
    RewriteEngine On 

    # Explicitly disable rewriting for front controllers 
    RewriteRule ^app.php - [L] 

    RewriteCond %{REQUEST_FILENAME} !-f 

    # Change below before deploying to production 
    RewriteRule ^(.*)$ /app.php [QSA,L] 
</IfModule> 

編輯 我也試過如下:

<IfModule mod_rewrite.c> 
     Options +FollowSymlinks 
     RewriteEngine On 

     # Explicitly disable rewriting for front controllers 
     RewriteRule ^app.php - [L] 

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

     # Change below before deploying to production 
     RewriteRule ^(.*)$ app.php [QSA,L] 
     DirectoryIndex index.php 
</IfModule> 
+0

我沒有看到你的htaccess文件有問題,你的其他網址也重寫url嗎? – Populus

+0

感謝您的回覆。第一個'.htaccess'的問題是它打破了與symfony相關的所有URL。第二個'.htaccess'的問題是所有的域都可以工作,但是app.php必須包含在與symfony項目綁定的域的URL中,所以我回到了我開始的地方,這相當於刪除了'.htaccess'完全。其他網址是基本的非symfony('index.php')網址。 – AnchovyLegend

回答

1

右後

RewriteCond %{REQUEST_FILENAME} !-f 

添加

RewriteCond %{REQUEST_FILENAME} !-d 

,並設置的DirectoryIndex的index.php

+0

我很感激這個幫助,但我很抱歉地說,我發言得太早了,在應用這些更改之後,URL中仍然需要'app.php'。 – AnchovyLegend

+0

請參閱編輯我的新'.htaccess'。 – AnchovyLegend

+0

哦!將[OR]添加到行檢查文件。 只有當沒有請求的文件或目錄時,它纔會重寫爲app.php。 – atn

0

有點晚了這場比賽,但我只是找到了一個Apache指令,節約了大量的時間,讓您的htaccess的清潔劑。唯一的警告是你必須有Apache 2.2.16+。除了有效文件(圖像等)之外,要使用app.php作爲前端控制器,請使用FallbackResource指令。

<Directory "/web/symfony-project"> 
    FallbackResource /app.php 
</Directory>