在我的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>
答案 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在共享主机上运行良好。