2014-04-30 63 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>