如何将 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 我相信在共享主机上运行良好。
在我的 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 我相信在共享主机上运行良好。