是否可以在根目录(www.domain.com)上部署一个Symfony2项目,并在子目录上部署另一个Symfony2项目?(www.domain.com/project2)
我看到了一些关于在子目录上部署Symfony2项目的问题,但不是同时在根目录上。
我共享了使用Apache Web服务器的网络托管,可以通过SSH访问并可以编辑.htaccess文件,但我不能编辑httpd.conf文件。
这怎么可能呢?
编辑:我在cPanel中创建了一个子域,并在那里安装了一个单独的Symfony项目,而不是子目录。它在不更改htaccess或其他配置的情况下完美工作。
任何事情都有可能,但这需要一些魔法。
问题出在.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