Symfony2: How to deploy in subdirectory (Apache)

2019-01-18 08:36发布

问题:

What is the best way to deploy symfony2 application in a subdirectory or an alias ?

Lets say that my application will run under: http://domain/symfonytest

symfonytest is an alias to some directory in my filesystem.

Is there some CLI operation that I can use ?

When I try to configure it manually I see a problem with routing.

Requets to http://domain/symfonytest/demo are seen by router as /symfonytest/demo

Is there a way to tell router to ignore /symfonytest prefix for the whole application ?

回答1:

If you are using Symfony < 2.3 you could follow this approach:

Just add RewriteBase in your .htaccess:

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


回答2:

If your project sits in a different directory what i would do is set all traffic to go into one file via rewrite rule:

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

And then I would set route prefix to my controller by annotation:

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

After that you put in your controller something like this (path would be domain/symfonytest):

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

Path: domain/symfonytest/demo

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

Hoep that helps



回答3:

For symfony3 it works with an alias in the apache config:

Alias /myapp /home/httpd/myapp/web