Journal Pourquoi utiliser des URL complètes, un exemple

Posté par (page perso) .
Tags : aucun
0
20
oct.
2006
Pourquoi utiliser des url de type
http://abcdef.ghi/mon_repertoire/index.html
plutôt que
http://abcdef.ghi/mon_repertoire/
ce qui est quand même plus joli.

Question :

Vous avez un site avec une page qui fait les updates du site, vous avez un cron qui appelle cette page avec un wget, cette page est protégée, vous avez vérifié que le wget passe depuis le serveur et pourtant votre page ne bouge pas ... depuis des heures et malgré vos tests récurrents avec le wget ... Mais que se passe t il ...

Réponse :

Votre premier test wget a créé un index.html puis des index.html.1, .2, etc. Et vous regarder desespérément cette première page générée qui ne change pas, et vous faites des refresh et ça ne change pas car quand vous utilisez http://abcdef.ghi/mon_repertoire/ et si un index.html existe, le serveur n'a aucune raison d'appeller votre index.php même si c'est la page que vous vouliez afficher :)

Vicieux, hein ?

Maintenant j'ai enfin une raison pour mettre des urls complètes :/
Dommage, je trouvais ça beaucoup plus joli avec juste le répertoire ...
  • # Réglage?

    Posté par . Évalué à 9.

    Si je ne m'abuse, tu as moyen de dire à Apache de prendre prioritairement index.php, et non index.html. Ou bien j'ai rien compris à ton problème?

    Parce se priver d'URLs "compréhensibles" pour ça, ça me paraît un peu dommage.
    • [^] # Re: Réglage?

      Posté par (page perso) . Évalué à 3.

      Tu peux choisir mais par défaut c'est ce comportement. C'est juste qu'il faut s'en rappeller et se souvenir que wget sauvegarde en index.html :)
    • [^] # Re: Réglage?

      Posté par . Évalué à 2.

      Pour faire ça avec apache, c'est :

      DirectoryIndex index.php

      mes 2 sous...
      • [^] # Re: Réglage?

        Posté par . Évalué à 2.

        Oui, enfin ce que voulait dire le monsieur, c'est que par défaut le DirectoryIndex est souvent à

        DirectoryIndex index.htm index.html index.php


        Le truc, c'est qu'effectivement l'ordre est important (ce qui permet notamment de rajouter une page d'erreur spécifique aux tentatives d'accès à des répertoires non-indexés : il suffit de terminer la ligne de DirectoryIndex par un /erreur.html, par exemple)
  • # Non, pas vicieux

    Posté par . Évalué à 2.

    Pas malin (sans en prendre ombrage).

    Parce que tu peux aussi plus simplement demander à wget de forcer le fichier de sortie (wget -O index.html http://tonurl/ ).
    • [^] # Re: Non, pas vicieux

      Posté par (page perso) . Évalué à 0.

      La commande était
      wget -q -O /dev/null url
      mais pour voir ce qui se passait, j'ai fait sans. Je ne savais pas que par défaut wget enregistre en index.html :)
      • [^] # Re: Non, pas vicieux

        Posté par (page perso) . Évalué à 2.

        wget -q -O /dev/null -o /dev/null url plutôt si c'est dans un script.
        Comme ça wget ne dis vraiment rien :P
  • # Mauvais argument

    Posté par . Évalué à 10.

    Je suis désolé, mais ton argument est stupide.

    Tu as fais une fausse manip et tu as écris un nouveau fichier sur le serveur web, c'est de ta faute.

    Appeler explicitement index.php est contraite à l'architecture du Web qui veut que:

    - Une URL ne change pas même si la techno change derrière.
    - Les adresses ne doivent pas contenir des informations d'implémentation, ici PHP.
    - Le client n'a pas à réclamer explicitement l'index d'un répertoire. Il doit demander une ressource sans se préocuper d'une distinction fichier/répertoire ou autre. Dans ce cadre, index n'apporte rien, au contraire.
    - Le fait d'associer l'espace des URLs à une arborescence disque réelle contribue à la confusion entre les deux.

    Cela n'a rien à voir avec une URL plus jolie qu'une autre..
    • [^] # Re: Mauvais argument

      Posté par (page perso) . Évalué à -2.

      C'est une impression ou l'architecture que tu décrit ne correspond pas du tout à la réalité ? :)

      Bon, je laisse tomber, je postais juste en espérant que ça servirait à d'autre ...

      Vendredi prochain, promis, je reviens aux idées pas nouvelles ou aux trolls.

      Bon week end à tous :)
    • [^] # Re: Mauvais argument

      Posté par . Évalué à 7.

      contraite à l'architecture du Web
      Non, contraire aux bonnes pratiques qui vont bien. C'est différent.

      Parce que sinon, ça ne remet pas en cause l'"architecture du web", et ça marche malgré tout.
  • # Url d'exemple

    Posté par . Évalué à 10.

    Utiliser le nom example.com pour vos example , c'est meme dans une RFC !!
    http://fr.wikipedia.org/wiki/Example.com


    Hop hop hop je suis déja sorti !!
  • # Complètement faux.

    Posté par (page perso) . Évalué à 7.

    Déjà, on n'utilise plus des URL (ni des URN) mais des URI. Ca c'est pour le petit détail qui tue.

    Ensuite, pointer vers http://example.net/monrep/ est sémantiquement complètement différent de http://example.net/monrep/index.html même si ton serveur http te redirige la même ressource interne.

    C'est pas dur à appréhender mais je peux résumer la spécification des URI pour t'en convaincre : deux URI sont équivalentes si une fois normalisée (casse du schéma et %encodage des caractères), les ressources pointées (et notament les chemins) sont identiques. Hors là ce n'est pas le cas. De plus, dans la spécification du schéma http pour les URI, rien n'indique qu'un répertoire identifie son fichier par défaut.

    URI : http://www.gbiv.com/protocols/uri/rfc/rfc3986.html

    Un jour libre ?

  • # Et pour en rajouter une couche...

    Posté par (page perso) . Évalué à 1.

    Salut,

    comme dit plus haut, la ligne de config apache qui liste les fichiers à afficher par défaut donne en plus un ordre de préséance (on teste les nom de fichier dans l'ordre spécifié, premier trouvé, premier affiché)

    On peut encore rajouter une couche d'indirection avec mod_rewrite (invisible pour l'utilisateur)

    et ainsi faire en sorte que
    http://host/home corresponde en fait à http://host/mon_site/home.php

    Ce qui permet ensuite, lors d'une évolution majeure du site (p.ex changement du système de gestion de contenu), de garder la même uri pour le visiteur, mais appeler la nouvelle version, par ex :

    V1 du site :
    http://host/home --> http://host/mon_site/home.php

    V2 du site
    http://host/home --> http://host/mon_blog/dotmachin/index.php

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.