php bin/console debug:router
добавляем /www/public/.htaccess – взять с SF3
# Based on http://stackoverflow.com/questions/17313023/symfony-2-2-1-url-rewrite-issue # Use the front controller as index file. It serves as fallback solution when # every other rewrite/redirect fails (e.g. in an aliased environment without # mod_rewrite). Additionally, this reduces the matching process for the # startpage (path "/") because otherwise Apache will apply the rewritting rules # to each configured DirectoryIndex file (e.g. index.php, index.html, index.pl). DirectoryIndex index.php #DirectoryIndex app_dev.php <IfModule mod_rewrite.c> RewriteEngine On # Redirect to URI without front controller to prevent duplicate content # (with and without `/app.php`). Only do this redirect on the initial # rewrite by Apache and not on subsequent cycles. Otherwise we would get an # endless redirect loop (request -> rewrite to front controller -> # redirect -> request -> ...). # So in case you get a "too many redirects" error or you always get redirected # to the startpage because your Apache does not expose the REDIRECT_STATUS # environment variable, you have 2 choices: # - disable this feature by commenting the following 2 lines or # - use Apache >= 2.3.9 and replace all L flags by END flags and remove the # following RewriteCond (best solution) RewriteCond %{ENV:REDIRECT_STATUS} ^$ #RewriteRule ^index_dev\.php(/(.*)|$) %{CONTEXT_PREFIX}/$2 [R=301,L] RewriteRule ^index\.php(/(.*)|$) %{CONTEXT_PREFIX}/$2 [R=301,L] # 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] # cache-bust assets url rewrite # Example format: /cpv-10/js/test123.js -> /js/test123.js # This allows us to change the asset version and "bust" intermediate caches (like varnish) # See http://symfony.com/doc/current/reference/configuration/framework.html#ref-framework-assets-version # See http://symfony.com/doc/current/reference/configuration/framework.html#assets-version-format RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^cpv-\d+\/(.+)$ $1 [L] RewriteCond %{REQUEST_FILENAME} -f #RewriteRule ^(.*)$ app_dev.php [QSA,L] RewriteRule ^(.*)$ index.php [QSA,L] # The following rewrites all other queries to the front controller. The # condition ensures that if you are using Apache aliases to do mass virtual # hosting, the base path will be prepended to allow proper resolution of the # app.php file; it will work in non-aliased environments as well, providing # a safe, one-size fits all solution. RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$ RewriteRule ^(.*) - [E=BASE:%1] #RewriteRule .? %{ENV:BASE}app_dev.php [L] RewriteRule .? %{ENV:BASE}index.php [L] </IfModule> <IfModule !mod_rewrite.c> <IfModule mod_alias.c> # When mod_rewrite is not available, we instruct a temporary redirect of # the startpage to the front controller explicitly so that the website # and the generated links can still be used. #RedirectMatch 302 ^/$ /app_dev.php/ RedirectMatch 302 ^/$ /index.php/ # RedirectTemp cannot be used instead </IfModule> </IfModule>
создаем /www/src/Controller/LuckyController.php
<?php // src/Controller/LuckyController.php namespace App\Controller; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; // нужно использовать это вместо /www/config/routes.yaml use Symfony\Bundle\FrameworkBundle\Controller\Controller; class LuckyController extends Controller { /** * @Route("/") */ public function main() { return $this->render('articles/main.html.twig', array('number' => 1)); // подключение к шаблону } /** * Matches /q exactly * * @Route("/q", name="blog_list") */ public function list() { exit('fff'); } }