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

Langage PHP Discussion :

Avoir de belles url


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2007
    Messages
    344
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2007
    Messages : 344
    Points : 127
    Points
    127
    Par défaut Avoir de belles url
    Bonjour,

    J'aimerais savoir comment font les framework pour avoir de belles url dans htaccess, exemple avec codeigniter on définit une fonction dans une classe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    public function hello()
    {
       echo'Hello World !';
    }
    ?>
    Et dans le navigateur on appelle cette page: www.site.com/hello et op ca afficher "Hello World !"...

    Et-il possible d'avoir un exemple simple et fonctionnel ? ou d'expliquer comment faire?

    Merci d'avance.

  2. #2
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    cherche sur google ou dans la FAQ les termes "URL Rewriting", tu devrais trouver ton bonheur ;o)

  3. #3
    Membre habitué
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2007
    Messages
    344
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2007
    Messages : 344
    Points : 127
    Points
    127
    Par défaut
    Apparement c'est pas de l'url rewrinting, vu que dans le framework il a aucun htaccess, à moins que l'ont peut faire du rewriting en php ??

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut
    D'une part tu as de l'url rewriting.
    Pour pouvoir envoyer les urls à un controleur, un fichier php.
    Ensuite c'est le controleur qui décide quoi faire de l'url.
    Dans ton exemple, l'url est directement mis en rapport avec une classe, et une méthode.
    Tous les controleurs ne fonctionnent pas ainsi, c'est simplement un mode de fonctionnement choisi, que l'on retrouve souvent dans bien des architectures MVC, et ces architectures MVC utilisent toutes un framework.

  5. #5
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    on peut... en bidouillant, mais en passant par une page 404, donc un htaccess.

    Dans tout les cas, c'est du htaccess.

    Sinon, c'est que ton URL est de la forme www.site.com/#hello et dans ce cas là ca peut etre de l'ajax et non de l'URL Rewriting.

    Mais a part ca je vois pas.

  6. #6
    Membre habitué
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2007
    Messages
    344
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2007
    Messages : 344
    Points : 127
    Points
    127
    Par défaut
    Alors comment je peux faire avec url rewriting, genre :

    www.site.com/index.php?p=photo

    devient => www.site.com/photo/


    www.site.com/index.php?p=photo&id=1

    devient => www.site.com/photo/1/

    Merci pour vos réponses

  7. #7
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    Citation Envoyé par Fladnag Voir le message
    cherche sur google ou dans la FAQ les termes "URL Rewriting", tu devrais trouver ton bonheur ;o)

    ...


    http://php.developpez.com/faq/index....arbo_virtuelle

  8. #8
    Membre habitué
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2007
    Messages
    344
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2007
    Messages : 344
    Points : 127
    Points
    127
    Par défaut
    Trouvé ! enfait c'est super simple

    www.site.com/index.php?p=photo

    RewriteRule ^(photo)$ index.php?p=$1

    devient : www.site.com/photo

    Mais maintenant si je vx rajouter une page( index.php?p=news), je dois rajouter une ligne dans mon htaccess ou il y un moyen de prendre dynamiquement la chaine qui se trouve apres index.php?='chaine' ??

    Merci

  9. #9
    Membre régulier Avatar de Lancelot du Lac
    Profil pro
    Inscrit en
    Février 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 95
    Points : 108
    Points
    108
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^(.+)$ index.php?p=$1
    Le point veut dire nimporte quel caractère, le signe plus veut dire une occurence ou plus de ce qui précède.

    Parfois ça peut être sympa de se de faire en sorte qu'il y ait une extension dans l'adresse, comme ça tu fais croire que ton site est statique:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^(.+)\.html$ index.php?p=$1

  10. #10
    Membre régulier Avatar de Lancelot du Lac
    Profil pro
    Inscrit en
    Février 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 95
    Points : 108
    Points
    108
    Par défaut
    Autre méthode qui tient en une ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^(photo|news)$ index.php?p=$1
    La barre verticale veut dire "ou," donc tu pourras ajouter d'autres chaînes et le tout tiendra toujours en une ligne.

    Par rapport au précédent, c'est moins général mais c'est utile si tu as d'autres pages dans le même dossier, et que tu ne veux pas que celles-là soient rendues inaccessibles par l'URL rewriting...

    Edit: autre cas, tu veux que le rewriting s'appliquer à toutes les adresses sauf, par exemple, "links" ou "disclaimer." Tu peux essayer quelque chose du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^((?!links|disclaimer).+)$ index.php?p=$1
    A tester et débugger si nécessaire, je ne sais pas si les assertions marchent dans les expressions rationnelles d'Apache et personnellement je n'ai jamais rien fait de ce style.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 27
    Points : 16
    Points
    16
    Par défaut pour codeigniter
    Non non, codeigniter n'a pas de fichier .htaccess dans la mesure ou il ne réécrit pas les URL.

    C'est plus complexe que ça... en faite non, pas tant que ça.
    Un script s'occupe de décomposer l'URL suivant les / , et ensuite de cherche le bon fichier.

    Donc, le premier segment est la classe (qui porte le même nom que le fichier, mais avec une majuscule), le deuxième segment est la méthode, le troisième et les autres les paramètres.

    Donc, si j'entre "monsite.php/index.php/blog/commentaire/1" ce n'est pas du rewriting d'URL, mais une URL propre d'origine.

    Dans ce cas, le framework décompose l'URL (explode), cherche le fichier "blog.php" et l'exécute, en sachant que j'appelle la fonction qui affiche les commentaires et que je passe a cette fonction l'argument "1" qui représente disons l'id du com.

    Edit :

    Oups un oubli et une correction.

    Par défaut, codeIgniter n'a pas de .htaccess. Il faut donc toujours écrire l'url avec index.php.

    Si tu veux supprimer l'index.php, il faut effectivement un .htacces avec ceci dedans.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RewriteEngine on
    RewriteCond $1 !^(index\.php|images|robots\.txt)
    RewriteRule ^(.*)$ /index.php/$1 [L]
    Après, tu peu, juste en passant par le fichiers de config, ajouter l'extension que tu veux à la fin de l'url. '.php; .html; .truc etc.)

    Et tu peu même avoir les URL sous la forme classique "index.php?c=top&m=moumoute" !

Discussions similaires

  1. Avoir des urls significatives
    Par nesswaw dans le forum CodeIgniter
    Réponses: 1
    Dernier message: 24/11/2008, 15h44
  2. Réponses: 4
    Dernier message: 31/10/2007, 10h17
  3. avoir des urls pour les indexer
    Par mathlouthi dans le forum Autres langages pour le Web
    Réponses: 0
    Dernier message: 05/09/2007, 09h46
  4. [Conception] Avoir des URLs correctes
    Par Marco85 dans le forum Webdesign & Ergonomie
    Réponses: 4
    Dernier message: 12/04/2007, 14h02

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