htaccess - 在子文件夹中安装Symfony2

Hel*_*ert 5 php apache .htaccess mod-rewrite symfony

我正在尝试将symfony应用程序部署到我的根目录的子文件夹中,我正试图弄清楚如何正确执行它.我只是解释一下情况.我的根目录有一个名为的子文件夹/private,其中包含一个重定向到的htaccess文件/private/web/current/(我正在使用capistrano进行部署).

文件夹结构

- ROOT/
---- private/
------- .htaccess (1)
------- current/
----------- web/
------------- app.php
------------- .htaccess (2)
Run Code Online (Sandbox Code Playgroud)

htaccess(1)

RewriteEngine On
RewriteRule ^$ /private/current/web/ [L]
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

结果

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

No route found for "GET /private/"
Run Code Online (Sandbox Code Playgroud)

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

Not Found

The requested URL /private/login was not found on this server.
Run Code Online (Sandbox Code Playgroud)

现在symfony从根目录路由,但symfony项目的根实际上是/ private.我是部署和htaccess规则的菜鸟,所以有谁可以帮助我吗?

提前致谢.

Rob*_*Rob 0

我认为第一个 htaccess 是问题所在(需要将 private 之后的路径附加到新的 url 中)。尝试某事

RewriteRule ^/private/?(.*) /private/app/web/$1
Run Code Online (Sandbox Code Playgroud)

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

RedirectMatch 301 /private(.*) /private/app/web/$1 
Run Code Online (Sandbox Code Playgroud)