Symfony2:如何在子目录中部署(Apache)

Seb*_*sza 2 php symfony symfony-2.1 symfony-2.0

在子目录或别名中部署symfony2应用程序的最佳方法是什么?

让我们说我的应用程序将在以下运行: http://domain/symfonytest

symfonytest是我的文件系统中某个目录的别名.

我可以使用一些CLI操作吗?

当我尝试手动配置时,我发现路由有问题.

路由器将http://domain/symfonytest/demo其视为重新发送/symfonytest/demo

有没有办法告诉路由器忽略/symfonytest整个应用程序的前缀?

mez*_*eze 10

如果您使用Symfony <2.3,您可以遵循以下方法:

只需添加RewriteBase.htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /symfonytest
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)

  • @ lucian303不需要关注过时的信息 - 很多人仍然在2.0或2.1,这可能会有所帮助.这个问题没有正确的标签并不是我的错,您只需编辑标签即可.对于2.3你不需要做任何事情,似乎开箱即用. (4认同)

Tro*_*ike 6

如果您的项目位于不同的目录中,我将通过重写规则将所有流量设置为一个文件:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
Run Code Online (Sandbox Code Playgroud)

然后我会通过注释将路由前缀设置到我的控制器:

# Index (main page)
_nameRouteIndex:
    resource:  "@MyBundle/Controller/IndexController.php"
    type: annotation
    prefix: /symfonytest
Run Code Online (Sandbox Code Playgroud)

在那之后你把控制器放在这样的东西(路径将是domain/symfonytest):

/**
 * Home page
 *
 * @return Response
 *
 * @Route("/", name="_index")
 */
 public function indexAction()
 {
 }
Run Code Online (Sandbox Code Playgroud)

路径:domain/symfonytest/demo

/**
 * Demo page
 *
 * @return Response
 *
 * @Route("/demo", name="_demo")
 */
 public function demoAction()
 {
 }
Run Code Online (Sandbox Code Playgroud)

Hoep有帮助