IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Comment racourcir l'URL de base d'accès à une application symphony2 [2.x]


Sujet :

Symfony PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Comment racourcir l'URL de base d'accès à une application symphony2
    Bonjour,

    Je souhaiterais savoir comment obtenir une URL propre, plus courte pour accéder à une application symfony2, comment enlever la base commune qui ne varie pas :

    Passer de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    http://localhost/symfony/web/app_dev.php/myapp
    http://localhost/symfony/web/app_dev.php/myapp/acteur/ajouter
    http://10.50.150.143/symfony/web/app.php/myapp/acteur/
    Vers des adresses plus propre comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    http://localhost/
    http://localhost/acteur/ajouter
    http://10.50.150.143/acteur/
    Où et comment agir ?

    Je suis sous Ubuntu 11.04 et j'utilise un serveur Apache2

    J'ai déjà essayé d'agir sur la configuration du serveur sur les Alias les virtualhost le documentRoot mais j'ai du mal à comprendre ce que je doit faire et si j’agis au bon endroit.

    Actuellement j'ai juste redéfini un alias

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DocumentRoot /home/nikya/www/symfony
     
    Alias /symfony/ "/home/nikya/www/symfony/"
     
    <Directory "/home/nikya/www/symfony/">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
    Question bonus surement liée :
    Est-il possible de de faire la différenciation pour qu'un appel en localhot pointe vers l’environnement de dev c'est à dire vers app_dev.php et un appel externe (à la machine local) vers l’environnent de prod ?

    En espérant avoir été suffisamment claire, je vous remercie de vous intéresser à mes interrogations.

  2. #2
    Inscrit
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 476
    Points
    476
    Par défaut
    Salut,

    Pour passer de localhost/sf/app.php a localhost/app.php il faut que tu change ton DocumentRoot. Normalement la 1ere ligne de ton code suffit, pas besoin de l'alias.

    Pour passer de /app.php/truc a /truc il faut utiliser l'URL rewriting.

    Pour acceder au mode dev en local et prod en distant, il faut que tu te fasses un app_perso.php, et dedans tu definies le mode selon l'IP. Regarde dans app_dev.php comment un filtre sur l'ip est fait. Et compare app.php et app_dev.php pour voir comment les modes sont definis.

    Avec tout ca tu devrais arriver a ce que tu veux !

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Merci @winzou pour ta réponse qui ma mieux éclairée.

    La première partie de la solution est ok, j'ai remplacé mon Document root :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # /etc/apache2/sites-enabled/000-default
    <VirtualHost *:80>
    	DocumentRoot /home/nikya/www/symfony/web
    [...]
    Du coups avec un appel direct sur http://localhost/ j'arrive bien sur le projet symfony MAIS en jouant sur le .htaccess contenue dans mon symfony/web, je n'arrive pas à obtenir le résultat souhaité.

    A partir de l'URL http://localhost/

    Cas 1 : http://localhost/ avec Version initiale du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ app.php [QSA,L]
    </IfModule>
    J’obtient le message d'erreur :
    Oops! An Error Occurred
    The server returned a "404 Not Found".
    Something is broken. Please e-mail us at [email] and let us know what you were doing when this error occurred. We will fix it as soon as possible. Sorry for any inconvenience caused.
    Mon accés à la version de prod ne semble pas autorisé

    Cas 2 : Avec le changement suivant dans le .htaccess
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^(.*)$ app_dev.php [QSA,L]
    J'arrive sur la page de base "Welcome" de symfony
    (Au passage une erreur 404 persiste sur le favicon pourtant bien présent à la racine de web)

    Cas 3 : donc logiquement avec le changement suivant je devrais avoir mon résultat souhaité :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^(.*)$ app_dev.php/myapp [QSA,L]
    Mais l'URL http://localhost pointe toujours sur la page "welcome"
    Et http://localhost/myapp/ ou http://localhost/myapp/acteur/ fonctionnent parfaitement mais se n'est pas le but recherché, je souhaite que myapp soit sous entendu et la réécriture ne semble pas fonctionner pour le coups là.

    Où est le problème ? Toujours dans le .htaccess ? D'autres piste SVP

  4. #4
    Inscrit
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 476
    Points
    476
    Par défaut
    Pour le cas 1 c'est peut-etre que tu n'as pas de route pour le mode prod non ? Si tu accedes directement a app.php ca donne quoi ?

    J'avais oublie, mais pour enlever ton prefix myapp, tu dois modifier tes routes, ca n'a rien a voir avec apache. Si tu n'en veux pas je vois pas bien pourquoi t'as prefixe toutes tes routes avec myapp ?

    Pour le 404 sur le favicon uhm je sais pas trop. Ca fait un bail que j'ai plus mis les mains dans apache. Essaie d'avoir la valeur de REQUEST_FILENAME pour voir s'il ressemble qqch de bien ou pas. Et regarde bien les logs Apache aussi, ils offrent souvent la solution.

  5. #5
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Encore merci Winzou ça avance bien,

    En effet pour mon préfixe myApp ce n'est plus du domaine d'Apache mais un choix au niveau des routes.

    Préfixe suggéré par ce tutorial je pensais que c’était une obligation et pas un choix optionnel.

    J'ai donc supprimé mon préfixe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # symfony/app/config/routing.yml
    myapp:
        resource: "@MyAppFilmothequeBundle/Resources/config/routing.yml"
        # prefix: myapp
    Ensuite pour arriver correctement sur ma page et non la "Welcome" de symfony j'ai enlevé les lignes suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # symfony/app/config/config_dev.yml
    _welcome:
        pattern:  /
        defaults: { _controller: AcmeDemoBundle:Welcome:index }
    Qui ne masque plus mon équivalent dans mon bundle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # symfony/src/MyApp/FilmothequeBundle/Resources/config/routing.yml
    myapp_accueil:
      pattern: /
      defaults: { _controller: MyAppFilmothequeBundle:Default:index }
    De plus ces manipulations on aussi résolues le problème d’accès à la page de prod qui est maintenant possible et le favicon n'est plus en "not found"

  6. #6
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    J'ai aussi trouvé une solution à ma question bonus :

    Est-il possible de de faire la différenciation pour qu'un appel en localhot pointe vers l’environnement de dev c'est à dire vers app_dev.php et un appel externe (à la machine local) vers l’environnent de prod ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # symfony/web/.htaccess 
    
    <IfModule mod_rewrite.c>
        RewriteEngine On
    
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{HTTP_HOST} ^localhost
        RewriteRule ^(.*)$ app_dev.php [QSA,L]
    
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{HTTP_HOST} !^localhost
        RewriteRule ^(.*)$ app.php [QSA,L]
    </IfModule>
    En espérant que ce soit une solution propre.

    Merci de ton aide winzou !

  7. #7
    Inscrit
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 476
    Points
    476
    Par défaut
    C'est pas mal ouais. Perso j'aurais opte pour une solution cote PHP (plus facile a modifier), mais bon ca revient au meme.

    Par contre tu sais quelle modif exactement a permis de retrouver ton favicon ? Parce que la tu parles de route et j'avoue ne pas trop voir le lien !

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 284
    Points : 149
    Points
    149
    Par défaut
    Bonjour,

    Je poste ici car je rencontre le même problème (pour supprimer "app.php" de mon URL), j'ai pourtant fait les mêmes manipulations.

    Mon .htaccess semble ne pas fonctionner, pourtant j'ai bien ajouter "rewrite' dans les mods de apache2.

    Losque je fais
    monsite.com => Ca fonctionne
    monsite.com/app.php/une_route => fonctionne
    monsite.com/une_route => fail

    Voici mon .htaccess (dossier web/):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ app.php [QSA,L]
    </IfModule>
    Bizarre non ? Merci pour votre attention !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/08/2014, 23h26
  2. [Débutant] comment accéder à une base sqlite depuis une application windows mobile
    Par binother dans le forum Windows Mobile
    Réponses: 0
    Dernier message: 28/12/2012, 11h31
  3. Réponses: 15
    Dernier message: 15/05/2006, 09h26
  4. Réponses: 10
    Dernier message: 15/05/2006, 07h51
  5. Accès à une application ouverte (OLE Automation ?)
    Par PascalB dans le forum C++Builder
    Réponses: 6
    Dernier message: 17/06/2002, 14h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo