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

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    octobre 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : octobre 2017
    Messages : 5
    Points : 2
    Points
    2

    Par défaut RegEx .htaccess pour répertoires années

    Bonjour à vous,
    sur l'un de mes sites, je classe différentes versions du site dans des dossier correspondant aux années de développement.

    Voici un exemple de structure de la base du site*:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    2015/
    2017/
    2019/
    .htaccess
    En accédant à la racine du site (par exemple https://mon-site.fr), je souhaite automatiquement afficher le contenu d'un répertoire (en l'occurrence, on va dire le répertoire 2017), mais également accéder, si nécessaire, aux autres répertoires (par exemple https://mon-site.fr/2019 qui est en développement).

    Jusqu'à maintenant, j'utilisais ce code au sein du fichier .htaccess de la base du site :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !/\d{4}/
    RewriteRule (.*) 2017/$1 [L]
    Cela fonctionne bien mis à part dans le cas ou j'aurai un autre dossier composé de 4 numéros dans mon lien (par exemple https://mon-site.fr/publications/2016/mon_article.pdf).

    J'ai alors tenté de créer une regex ne cherchant la suite de 4 chiffres qu'en début de chaîne, mais cela ne fonctionne dans aucun des deux cas suivants (je remplace simplement la 2ème ligne du code précédent par celle-ci) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteCond %{REQUEST_URI} !^/\d{4}/
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteCond %{REQUEST_URI} !^\d{4}/
    Auriez-vous une idée de la bonne regex à utiliser ?


    Merci !

  2. #2
    Membre habitué Avatar de silfun1
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    mars 2015
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : mars 2015
    Messages : 90
    Points : 138
    Points
    138

    Par défaut

    Bonjour Pascal,

    Après quelques tests, la bonne règle Rewrite est cell-çi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteCond %{REQUEST_URI} !^/\d{4}/
    RewriteRule (.*) 2018/$1 [R=301,L]
    Tests curl
    Test 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    curl -k https://www.monsite.net/2018/pubs/1117/index.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <html>
    <head>
    <meta name="robots" content="noindex">
    </head>
    <body>
    ma page
    ...
    Test 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl -k https://www.monsite.net/pubs/1117/index.ph
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <html><head>
    <title>301 Moved Permanently</title>
    </head><body>
    <h1>Moved Permanently</h1>
    <p>The document has moved <a href="https://www.monsite.net/2018//pubs/1117/index.php">here</a>.</p>
    </body></html>
    Test 3
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl -k https://www.monsite.net/pubs/index.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <html><head>
    <title>301 Moved Permanently</title>
    </head><body>
    <h1>Moved Permanently</h1>
    <p>The document has moved <a href="https://www.monsite.net/2018//pubs/index.php">here</a>.</p>
    </body></html>
    ####

    L'autre règle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteCond %{REQUEST_URI} !^\d{4}/
    RewriteRule (.*) 2018/$1 [R=301,L]
    Génère un ajout qui fait doublon : donc pas bon pour tes affaires.
    Ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl -k https://www.monsite.net/2018/pubs/1117/index.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <html><head>
    <title>301 Moved Permanently</title>
    </head><body>
    <h1>Moved Permanently</h1>
    <p>The document has moved <a href="https://www.monsite.net/2018//2018/pubs/1117/index.php">here</a>.</p>


    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
    - Ne pas hésiter à cliquer sur "Résolu" quand votre problème posé a trouvé une solution. Et un petit merci fait toujours plaisir
    -- Mon projet principal = http://www.usiscript.com/description.php

Discussions similaires

  1. htaccess pour supprimer un répertoire de l'url
    Par kaking dans le forum Langage
    Réponses: 2
    Dernier message: 02/03/2017, 10h19
  2. Réponses: 12
    Dernier message: 04/09/2006, 17h59
  3. .htaccess pour gérer l'erreur 404 : plantage du site
    Par Thomus38 dans le forum Apache
    Réponses: 8
    Dernier message: 19/07/2006, 12h29
  4. Probleme avec DateDiff pour les années....
    Par angelevil dans le forum VB 6 et antérieur
    Réponses: 23
    Dernier message: 27/03/2006, 09h19
  5. Moyenne 5 dernières année pour chaque année?
    Par kissmytoe dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/02/2006, 19h28

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