是否可以在根目录(www.domain.com)上部署Symfony2项目,在子目录中部署另一个Symfony2项目? (www.domain.com/project2)
我看到several questions和turorials关于在子目录中部署Symfony2项目,但不能同时在根目录上部署。
我共享了使用Apache网络服务器并具有SSH访问权限的webhosting,可以编辑.htaccess文件,但我无法编辑httpd.conf文件。
这怎么可能?
修改 我在cPanel中创建了一个子域,并在那里安装了一个单独的Symfony项目,而不是子目录。无需更改htaccess或其他配置即可完美运行。
答案 0 :(得分:2)
一切皆有可能,但这需要一些魔力。
问题在于.htaccess,更具体地说是Symfony2在那里提出的规则:
# If the requested filename exists, simply serve it.
# We only want to let Apache serve files and not directories.
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .? - [L]
# Rewrite all other queries to the front controller.
RewriteRule .? %{ENV:BASE}/app.php [L]
您对子目录项目的请求将被重新写入主项目的前端控制器,游戏结束。
有几种方法可以解决这个问题。一种方法是更改主项目的.htaccess文件,以明确排除子项目目录。但是,由于第一个规则,这仍然允许从您可能不需要的主项目提供子项目文件。这可以通过更多摆弄重写规则来解决。
另一种选择是使用Symfony2来解决这个问题。我有一个类似的项目(不是你的问题,但也有子项目),我的routing.yml是这样的:
collaboration:
resource: "@CCollabBundle/Controller"
type: annotation
prefix: /{_site}
defaults:
_site: demo
您可以简单地添加一个没有指向主项目的前缀的路由规则,以及一个带有指向子项目的前缀的路由规则。例如(未经测试的代码,可能有效也可能无效):
mainproject:
resource: "@MainProjectBundle/Resources/config/routing.yml"
prefix: /
subproject:
resource: "@SubProjectBundle/Resources/config/routing.yml"
prefix: /subproject