php - htaccess - 在子文件夹中安装 Symfony2

标签 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 规则一窍不通,有人可以帮我解决这个问题吗?

提前致谢。

最佳答案

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

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

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

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

关于php - htaccess - 在子文件夹中安装 Symfony2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27910096/

相关文章:

php - 从数据库读取的表行中 ID 的超链接

apache - 基于TLD在.htaccess中设置环境变量

java - Apache Camel 调度程序错误 : Failed to resolve endpoint

php - htaccess 404 在添加尾部斜杠时无法正常工作

php - 将 .php 重写为 .html 并将 .php 重定向到 .htaccess 中的 404

regex - ^ 字符无法在 htaccess 中进行 mod 重写

php - paypal 与 Website Payments Standard 集成,通过电子邮件发送下载链接

php - PHP 中的语言检测 ( UTF-8 )

java - org.apache.hadoop.io.Text无法转换为org.apache.hive.hcatalog.data.HCatRecord

php - 用 php 和 http 传递大变量?