如何将symfony /web/app.php移动到/root/app.php

时间:2015-01-17 17:48:50

标签: apache .htaccess symfony

在我的symfony中,我将/MySymfonyFolder/web/app.php移动到root并将其重命名为index.php,例如/MySymfonyFolder/index.php,我改变了如下所示的htaccess但是当我写here时,它会导致通过cssrewrite找到css图像的问题。

1)我不想将/ MySymfonyFolder / web / bundles /,/ MySymfonyFolder / web / images /和/ MySymfonyFolder / web / css移动到/ MySymfonyFolder /。 2)我不想在symfony root之外的上层移动/ app /和/ src /。

假设我希望所有/index.php(symfony app.php),/ app /和/ src /都在子文件夹中,htaccess应该如何识别/MySymfonyFolder/index.php和/ MySymfonyFolder / web /它也可以找到图像?

这是我的错误.htaccess导致css图像问题。请纠正它。我搜索了stackoverflow,但没有发现任何相关内容。

<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 ^index\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]

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

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

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

3 个答案:

答案 0 :(得分:3)

您应该查看documentation

如果您需要重命名或移动您的网络目录,您唯一需要保证的是app.php和app_dev.php前端控制器中app目录的路径仍然正确。如果您只是重命名目录,那就没事了。但是如果你以某种方式移动它,你可能需要修改这些文件中的路径:

require_once __DIR__.'/app/bootstrap.php.cache';
require_once __DIR__.'/app/AppKernel.php';

您还需要更改composer.json文件中的extra.symfony-web-dir选项:

{
    ...
    "extra": {
        ...
        "symfony-web-dir": "."
    }
}

答案 1 :(得分:1)

尝试:

RewriteEngine on
RewriteBase /
RewriteRule ^css/(.*) web/css/$1
RewriteRule ^images/(.*) web/images/$1
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]

OR

RewriteEngine on
RewriteBase /
RewriteRule ^bundles/(.*) web/bundles/$1
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]

所有这些正在寻找通常在web文件夹中的任何请求并预先挂起web / part到请求,所以理论上它应该工作,可能只需要根据你有什么文件进行调整

您还应该考虑更新.htaccess以防止直接访问不在Web文件夹中的其他应用程序文件,Symfony因为某些原因而无法访问这些文件。不建议使用根文件夹作为DocumentRoot。

答案 2 :(得分:0)

我的经验法则是,如果你正在使用Symfony2,它可能对于共享主机来说太大了。您需要控制您的服务器,尤其是设置文档根等。

考虑使用Linode或Digital Ocean等产品。或者重新考虑是否需要一个像Symfony2一样的完整堆栈框架。我相信Laravel在共享主机上运行良好。