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

Apache Discussion :

Supprimer les extensions de tous les fichiers dans les URL


Sujet :

Apache

  1. #1
    Membre averti Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : mai 2006
    Messages : 1 051
    Points : 439
    Points
    439
    Par défaut Supprimer les extensions de tous les fichiers dans les URL
    J'ai passé du temps à réécrire mes URLS sans extensions et pas moyen de trouver la syntaxe correcte.
    En recherchant un peu sur Google j'ai vu qu'on pouvait employer la négociation de contenu sur apache. Cette dernière est effectivement faite pour négocier les langues et les types de médias mais aussi pour traiter les extensions.

    Des avis ? Je souhaite ne plus utiliser les extensions de fichier et d'urls dans le développement d'un site.
    Développeur Web sénior (2005) spécialisé Symfony2 - Je tiens mon petit blog tranquillement, viens faire un tour http://www.ikonenn.com

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2005
    Messages : 9 601
    Points : 12 751
    Points
    12 751
    Par défaut
    La réécriture d'URL me semble plus adaptée. On est là pour vous aider à écrire vos règles si vous avez du mal. Je dis ça, je dis rien...

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  3. #3
    Membre averti Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : mai 2006
    Messages : 1 051
    Points : 439
    Points
    439
    Par défaut
    Ok voilà un petit htaccess :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    RewriteEngine on
    RewriteRule ^article/([0-9]*)\.html$  index.php?pg=article&ref=$1  [L]
    RewriteRule ^([a-z]*)/([-a-z]*)\.html$  index.php?pg=$1-$2  [L]
    RewriteRule ^([-a-z0-9]*)\.html$  index.php?pg=$1  [L]
    Comment faire en sorte de pouvoir utiliser ce type de lien hypertexte dans mes pages Web et me dissocier complètement des extensions : http://www.site.com/article/il-fait-beau-ajourdhui
    Je ferai de même avec les images et autres médias.

    J'avais ouvert un POST sur l'intérêt des URIs sans extensions : http://www.developpez.net/forums/sho...d.php?t=574373
    L'un des intérêts (et il y en a d'autre) pour moi aujourd'hui est de pouvoir se dire que si l'extension HTML est supprimée un jour ou remplacée, je n'aurai pas d'intervention à faire sur mes liens hypertexte.

    Merci d'avance !
    Développeur Web sénior (2005) spécialisé Symfony2 - Je tiens mon petit blog tranquillement, viens faire un tour http://www.ikonenn.com

  4. #4
    Membre averti Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : mai 2006
    Messages : 1 051
    Points : 439
    Points
    439
    Par défaut
    Dotclear utilise exactement la méthode que je souhaite concernant les Urls :
    http://petit.dotclear.net/pages/2005...nt-a-la-racine
    Développeur Web sénior (2005) spécialisé Symfony2 - Je tiens mon petit blog tranquillement, viens faire un tour http://www.ikonenn.com

  5. #5
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2005
    Messages : 9 601
    Points : 12 751
    Points
    12 751
    Par défaut
    Tu veux dire que le fichier il-fait-beau-ajourdhui.html (ou .php) existe ?

    On peut imaginer une réécriture de la sorte, pour chaque extension à ajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    RewriteEngine on
     
    RewriteCond %{REQUEST_URI} ! \.[a-z]*$ [NC]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME}.html -f
    RewriteRule (.*) $1.html [L]
     
    RewriteCond %{REQUEST_URI} ! \.[a-z]*$ [NC]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME}.jpg -f
    RewriteRule (.*) $1.jpg [L]
     
    ...
    C'est à tester, je ne l'ai pas fait.

    En gros, si l'URL demandée ne se termine pas par un .xxx, que ça ne correspond pas à un fichier ou un répertoire, mais qu'en rajoutant .html ça correspond à un fichier, et bien on réécrit vers ce fichier.html, et etc. pour chaque extension.

    Mais là, pour le coup, j'avoue qu'effectivement la négociation de contenu présenterait l'avantage de la simplicité : je pensais que tu voulais juste virer le .html, d'où que je trouvais qu'utiliser la négociation de contenu, c'était un peu violent.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  6. #6
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2005
    Messages : 9 601
    Points : 12 751
    Points
    12 751
    Par défaut
    Citation Envoyé par speedev Voir le message
    Dotclear utilise exactement la méthode que je souhaite :
    http://petit.dotclear.net/pages/2005...nt-a-la-racine
    Sur ce site, les images sont présentes avec leurs extensions...

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  7. #7
    Membre averti Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : mai 2006
    Messages : 1 051
    Points : 439
    Points
    439
    Par défaut
    Non le fichier n'existe pas !
    Le fichier est un template dont l'extension est "tpl.php" et il est appelé par require() (php) depuis le fichier index.php.
    De plus sa sémantique est différente car il contient des underscores comme séparateurs de mots alors que dans mes urls j'utilise des tirets.

    Je ne pense pas que ta solution fonctionnerait avec ma conf....si ? Je vais regarder...
    Développeur Web sénior (2005) spécialisé Symfony2 - Je tiens mon petit blog tranquillement, viens faire un tour http://www.ikonenn.com

  8. #8
    Membre averti Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : mai 2006
    Messages : 1 051
    Points : 439
    Points
    439
    Par défaut
    Oui mais niveau Urls...c'est ce que je souhaite
    Développeur Web sénior (2005) spécialisé Symfony2 - Je tiens mon petit blog tranquillement, viens faire un tour http://www.ikonenn.com

  9. #9
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2005
    Messages : 9 601
    Points : 12 751
    Points
    12 751
    Par défaut
    Citation Envoyé par speedev Voir le message
    Oui mais niveau Urls...c'est ce que je souhaite
    Qu'est-ce que tu veux dire par là ? Virer le .jpg ou le .html, c'est pas ce que tu souhaites ?

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  10. #10
    Membre averti Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : mai 2006
    Messages : 1 051
    Points : 439
    Points
    439
    Par défaut
    Bon je reprends tout :

    A la base j'ai ouvert un POST sur la négociation de contenu qui consiste à utiliser le service Apache pour "négocier" les médias (contenus) demandés (html, xml, jpg, png, doc, etc...). Le titre de mon POST que tu as modifié (Devenu "Supprimer les extensions de tous les fichiers dans les URL") n'est pas exactement ce que je souhaite mais ce n'est pas grave, l'important c'est que je trouve la solution.

    J'ai donc vu qu'on pouvait se dissocier des extensions de contenus moyennant une configuration apache précise. C'est pour rejoindre cet article http://www.la-grange.net/w3c/Style/URI que je souhaite employer la négociation de contenu, c'est-à-dire pour concevoir des URIs dites "sympas" pérennes et efficaces à de nombreux points de vue.

    Dans un premier temps je souhaite supprimer les ".html" qui sont en fait des extensions réécrites par Apache (mes fichiers étant tous des templates complètement innacessible depuis un navigateur car en dehors du Document_root). Ensuite, je m'attaquerai à la gestion des images.

    Pour la suppression des ".html" j'avais testé la réécriture d'URL sans succès mais aujourd'hui je sais que la solution pour moi est la content negociation.
    Développeur Web sénior (2005) spécialisé Symfony2 - Je tiens mon petit blog tranquillement, viens faire un tour http://www.ikonenn.com

  11. #11
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2005
    Messages : 9 601
    Points : 12 751
    Points
    12 751
    Par défaut
    Citation Envoyé par speedev Voir le message
    Pour la suppression des ".html" j'avais testé la réécriture d'URL sans succès mais aujourd'hui je sais que la solution pour moi est la content negociation.
    Je ne comprends toujours pas pourquoi tu dis ça : l'URL rewriting convient très bien à ton cas. Par ailleurs, la négociation de contenu ne marchera pas car elle suppose qu'il existe dans le document root un fichier dont le nom est proche de celui demandé, ce qui ne peut être le cas avec ton mécanisme de template

    Bref, as-tu essayé les règles que j'ai données ? Il faut les simplifier un peu et bien sûr garder tes règles actuelles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    RewriteCond %{REQUEST_URI} !\.[a-z]*$ [NC]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule (.*) $1.html [L]
     
    ...
     
    RewriteRule ^article/([0-9]*)\.html$  index.php?pg=article&ref=$1  [L]
    RewriteRule ^([a-z]*)/([-a-z]*)\.html$  index.php?pg=$1-$2  [L]
    RewriteRule ^([-a-z0-9]*)\.html$  index.php?pg=$1  [L]
    Pareil, à tester car je ne l'ai pas fait (enfin, un petit peu quand même ).

    Tu peux également faire plus simple en mettant les images dans un répertoire spécial : pour le répertoire racine, tu mets un .htaccess qui fait la manip' sur les templates, et dans le répertoire images, tu fais uniquement la manip pour rajouter .jpg, .gif, ou bien tu utilises la négociation de contenu, car là, vu que cette fois-ci il existe un fichier avec un nom proche de celui demandé.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  12. #12
    Membre averti Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : mai 2006
    Messages : 1 051
    Points : 439
    Points
    439
    Par défaut
    Citation Envoyé par _Mac_ Voir le message
    Par ailleurs, la négociation de contenu ne marchera pas car elle suppose qu'il existe dans le document root...
    C'est exactement l'info que je redoutais dans un de mes posts précédent.
    Le problème est bien donc lié à l'arborescence que j'ai choisie dans le cas où j'opte pour la négociation de contenu.

    Je vais tester tes règles demain merci !
    Développeur Web sénior (2005) spécialisé Symfony2 - Je tiens mon petit blog tranquillement, viens faire un tour http://www.ikonenn.com

  13. #13
    Membre averti Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : mai 2006
    Messages : 1 051
    Points : 439
    Points
    439
    Par défaut
    Et bien tes règles de réécritures fonctionnent nickel merci !
    Je vais continuer le boulot sur les images et le reste.

    A+
    Développeur Web sénior (2005) spécialisé Symfony2 - Je tiens mon petit blog tranquillement, viens faire un tour http://www.ikonenn.com

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

Discussions similaires

  1. [Batch] Suppression de fichiers avec exception dans les extensions
    Par tazgero dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 01/03/2010, 11h39
  2. Supprimer des fichiers sur les bureaux de tous les users ???
    Par proteine1024 dans le forum VBScript
    Réponses: 1
    Dernier message: 01/09/2009, 09h56
  3. Problème de fichiers dans les dossiers de mes bases
    Par grinder59 dans le forum SQL Procédural
    Réponses: 0
    Dernier message: 20/07/2007, 21h14
  4. [VBA-E]Y-a-t-il des fichiers dans les sous-rep de mon rep ?
    Par Kaiba dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/04/2007, 23h28
  5. Réponses: 4
    Dernier message: 20/12/2006, 11h26

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