Comment supprimer " Web / app dev.php" de Symfony2 Url?

je viens de créer mon premier projet Symfony2. Mais le "/web/app_dev.php " partie dans L'URL m'agace. Il devrait être possible de le faire sans serveurs virtuels...

mais quand j'essaierai ça.htaccess je reçois toujours des erreurs de routage et le web "/" est toujours ajouté à l'url...

EDIT: L'ensemble du projet est également dans un sous-répertoire nommé "symfonyTest". L'Url de la page de démonstration est "http://localhost/symfonyTest/web/app_dev.php/demo/" et il devrait devenir "http://localhost/symfonyTest/demo/". Les liens doivent aussi avoir cette syntaxe. Est-ce possible?

18
demandé sur phil-opp 2012-03-12 18:59:02

7 réponses

Symfony2 est livré avec un mode de débogage intégré, qui est ce que vous utilisez lorsque vous accédez à des url avec l'app_dev.ajout de php. Le mode de débogage cache nettement moins que le mode de production auquel on peut accéder en dirigeant votre navigateur vers l'url, mais en laissant de côté l'app_dev.php. Si l'accès à cette url ne fonctionne pas, cela signifie probablement que vous devez vider votre cache de production.

pour effacer le terminal de cache direct you (console de commande) à la racine de votre Symfony projet. À partir de là, tapez la commande suivante:

php app/console cache:clear --env=prod --no-debug

Par les commentaires ci-dessous dans Symfony 3 cela a déménagé:

php bin/console cache:clear --env=prod --no-debug

ceci devrait effacer le cache de vos productions et vous permettre d'accéder aux urls sans l'app_dev.php.

Comme pour la partie web de l'url. La façon la plus simple de l'enlever est de définir la racine web de votre projet dans le dossier web. Il est préférable de le faire avec apache en utilisant des serveurs virtuels, mais il y a des moyens de le faire avec le htaccess.

http://kb.siteground.com/how_to_change_my_document_root_folder_using_an_htaccess_file/

Espérons que cette aide!

21
répondu Shattuck 2016-06-28 15:38:26
<VirtualHost *:80>
    DocumentRoot "path_to_symfonyTest/web"  
    ServerName "symfonyTest"  
    <Directory "path_to_symfonyTest/web">
        DirectoryIndex app_dev.php
        AllowOverride All
        Order allow,deny
        Allow from all
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ app_dev.php [QSA,L]
        RedirectMatch permanent ^/app_dev\.php/(.*) /
    </Directory>
</VirtualHost>

ça fait partie de mon httpd.conf

10
répondu usrmrz 2012-09-30 21:10:37

j'ai eu ce problème aussi, veuillez jeter un oeil à mes configurations et de les essayer

à l'intérieur de mon .htaccess:

Salut à tous, j'ai eu ce problème aussi. Et il semble que le "stock" .htaccess est le problème. J'ai résolu ce problème dans mon environnement et voici mon .htaccess avec des notes:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_URI}:: ^(/.+)/(.*)::$
    RewriteRule ^(.*) - [E=BASE:%1]
    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteRule ^app_dev.php(/(.*)|$) %{ENV:BASE}/ [R=301,L]    ##### this is the part that you     should tweak, have the .htaccess point the request to app_dev.php, since the routing.yml is empty initially
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule .? - [L]
    RewriteRule .? %{ENV:BASE}/app_dev.php [L]        ##### this is the part that you should tweak, have the .htaccess point the request to app_dev.php, since the routing.yml is empty initially
</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.php/
        # RedirectTemp cannot be used instead
    </IfModule>
</IfModule>

dans mon entrée "symfony" dans /etc / apache2 / sites-disponible:

<VirtualHost 127.0.1.15>
    ServerAdmin webmaster@localhost
    ServerName symfony
    DocumentRoot /var/www/Symfony/web
    DirectoryIndex app.php
    <Directory /var/www/Symfony/web>
        Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
10
répondu Frederick G. Sandalo 2013-06-04 10:11:01

si vous utilisez un hôte virtuel apache, vous pouvez le faire fonctionner comme vous le souhaitez. Voici un exemple d'hôte virtuel de mon XAMPP:

<VirtualHost *:80>
    ServerName myurl.local

    # Basic stuff
    DocumentRoot "C:/path/to/symfony/web"
    DirectoryIndex app.php
    <Directory "C:/path/to/symfony/web">
        AllowOverride All
        Allow from All
    </Directory>
</VirtualHost>

après avoir redémarré votre apache, vous pouvez accéder au projet par