htaccess - 在子文件夹中安装Symfony2

时间:2015-01-12 20:20:17

标签: php apache .htaccess symfony mod-rewrite

我试图将symfony应用程序部署到我的根目录的子文件夹中,并且我试图找出如何正确执行该操作。我只是解释一下情况。我的根目录有一个名为/private的子文件夹,其中包含一个重定向到/private/web/current/的htaccess文件(我使用capistrano进行部署)。

文件夹结构

- ROOT/
---- private/
------- .htaccess (1)
------- current/
----------- web/
------------- app.php
------------- .htaccess (2)

htaccess(1)

RewriteEngine On
RewriteRule ^$ /private/current/web/ [L]

htaccess(2)

DirectoryIndex app.php

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
    RewriteRule ^(.*) - [E=BASE:%1]

    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]

    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule .? - [L]

     RewriteRule .? %{ENV:BASE}/app.php [L]
 </IfModule>

<IfModule !mod_rewrite.c>
    <IfModule mod_alias.c>
        RedirectMatch 302 ^/$ /app.php/
    </IfModule>
</IfModule>

结果

当我请求/private时,我收到 symfony错误

No route found for "GET /private/"

当我请求/private/login/login时,我收到浏览器错误

Not Found

The requested URL /private/login was not found on this server.

现在symfony从根目录路由,但symfony项目的根目的是/ private。我在部署和htaccess规则中都是一个菜鸟,所以有谁可以帮我解决这个问题?

提前感谢。

1 个答案:

答案 0 :(得分:0)

我认为第一个htaccess是问题(私有之后的路径需要附加到新网址)。试试......

RewriteRule ^/private/?(.*) /private/app/web/$1

或(使用http://www.htaccessredirect.net/生成)

RedirectMatch 301 /private(.*) /private/app/web/$1