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

how to move symfony /web/app.php to /root/app.php

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

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

假设我想要所有的 /index.php (symfony app.php), /app/ 和 /src/ 在一个子文件夹中,htaccess 应该如何识别这两个 /MySymfonyFolder/index .php 和 /MySymfonyFolder/web/ 它也能找到图像吗?

这是我错误的 .htaccess,导致 css 图片问题。请更正。我搜索了 Whosebug,没有找到任何相关信息。

<IfModule mod_rewrite.c>
    RewriteEngine On

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

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

    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteRule ^index\.php(/(.*)|$) %{ENV:BASE}/ [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>

尝试:

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

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

所有这些正在做的是寻找通常在 web 文件夹中的任何请求,并将 web/ 部分放在请求之前,所以理论上它应该可以工作,可能只需要根据文件进行调整你有。

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

你应该看看 documentation!

如果您需要重命名或移动您的 web 目录,您唯一需要保证的是 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": "."
    }
}

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

考虑使用诸如 Linode 或 Digital Ocean 之类的东西。或者重新考虑是否需要像 Symfony2 这样的全栈框架。 Laravel 我相信在共享主机上运行良好。