Problème url rewriting et redirection

Discussion dans 'URL Rewriting et .htaccess' créé par YO31, 4 Février 2022.

  1. YO31
    YO31 Nouveau WRInaute
    Inscrit:
    3 Février 2022
    Messages:
    3
    J'aime reçus:
    0
    Bonjour,

    Actuellement, mon « htaccess » se trouvant à la racine de mon site, redirige toutes les URL vers un format unique commençant par : https://www... (avec www ou sans www, avec https ou http (toutes les combinaisons). Donc jusque-là tout est super !

    Mon problème est que depuis que j’ai ajouté un fichier « htaccess » dans le dossier guitare « cours/guitare » (afin de réécrire certains types d’url), je n’ai plus aucune redirection et cela concerne toutes les urls présentes dans ce dossier guitare y compris celles qui ne sont pas concernées par cette réécriture.

    Je souhaiterais que les urls de ce dossier qui sont concernées par la réécriture redirigent vers la nouvelle adresse et toujours dans le format « https://www. » et que celles qui ne sont pas concernées par la réécriture pointent comme avant vers le format https://www.

    Je souhaiterais que cela soit possible en prenant en compte toutes les combinaisons possibles d’une adresse (avec www ou sans www, avec https ou http) pour que ça redirige toujours au bon format « https://www ».

    La réécriture concerne les adresses de type : cours/guitare/ville.php?villeg=45000

    Effectivement, ces adresses réécrites sont accessibles de plusieurs façons :

    Avec l’ancienne adresse :
    Code:
    https://site.com/cours/guitare/ville.php?villeg=82000
    http://site.com/cours/guitare/ville.php?villeg=82000
    https://www.site.com/cours/guitare/ville.php?villeg=82000
    http://www.site.com/cours/guitare/ville.php?villeg=82000
    site.com/cours/guitare/ville.php?villeg=82000
    Avec la nouvelle adresse :
    Code:
    https://site.com/cours/guitare/82000.php
    http://site.com/cours/guitare/82000.php
    https://www.site.com/cours/guitare/82000.php
    http://www.site.com/cours/guitare/82000.php
    site.com/cours/guitare/82000.php

    Voici mon fichier htaccess qui se trouve à la racine de mon site :
    Code:
    RewriteEngine On
    RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
    RewriteCond %{REQUEST_URI} !^/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
    RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/[0-9a-zA-Z_-]+$
    RewriteRule ^index.php$ https://www.site.com/ [R=301,L]
    
    RewriteCond %{HTTP_HOST} !^www.site.com$ [NC]
    RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
    RewriteCond %{REQUEST_URI} !^/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
    RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/[0-9a-zA-Z_-]+$
    RewriteRule ^(.*)$ https://www.site.com/$1 [L,R=301]
    
    # Redirect all non-ssl to ssl.
    RewriteCond %{HTTPS} off
    RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
    RewriteCond %{REQUEST_URI} !^/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
    RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/[0-9a-zA-Z_-]+$
    RewriteRule ^(.*)$ https://www.site.com/$1 [R,L]

    Et voici mon 2e htaccess qui se trouve dans le dossier guitare :

    - celui-ci me réécrit bien la nouvelle url que je souhaite, mais l'ancienne url ne redirige pas vers la nouvelle.
    - De plus, mes url de ce dossier guitare, non concernées par la réécriture, ne redirige plus comme avant vers le https://www

    Code:
    RewriteEngine on
    RewriteRule ^cours-guitare-([0-9]+).php$  ville.php?villeg=$1 [R]
    Je vous remercie par avance, pour une éventuelle réponse.
    Cordialement,
    Lionel
     
  2. emualliug
    emualliug WRInaute occasionnel
    Inscrit:
    1 Février 2020
    Messages:
    449
    J'aime reçus:
    104
    Je suis pas sûr de bien comprendre ce que tu exposes et ce que tu souhaites.

    De façon générale, éviter la multiplication des .htaccess ; ce n'est bon ni pour la performance ni, surtout pour la maintenance.

    Je testerai pour voir d'ajouter la RewriteRule dans le dossier guitare à celui présent à la racine.

    En passant, je ne pense pas qu'adopter une structure de dossiers "en dur" pour ses scripts PHP soit une bonne chose, du moins pas une structure qui suive celle de l'URL.
     
    YO31 apprécie ceci.
  3. YO31
    YO31 Nouveau WRInaute
    Inscrit:
    3 Février 2022
    Messages:
    3
    J'aime reçus:
    0
    Bonjour,

    Merci beaucoup pour votre réponse.

    J'ai effectivement ajouté la RewriteRule dans le htaccess qui se trouve à la racine de mon site et cela fonctionne. Toutes les redirections se font correctement.

    "je ne pense pas qu'adopter une structure de dossiers "en dur" pour ses scripts PHP soit une bonne chose"

    Si je comprends bien... il serait donc préférable d'avoir qu’une seule RewriteRule ( donc dynamique...) qui s'adapte à tous mes dossiers ? C'est donc cela que vous me conseillez ?

    Effectivement, avec la méthode que j'utilise pour le moment, cela m'obligerait à créer plusieurs règles d'écritures pour chacun des dossiers. Donc, si je comprends bien cette méthode serait déconseillée, car elle consommerait beaucoup trop de ressources, côté serveur... ?

    Je vous remercie beaucoup pour votre aide, Lionel
     
  4. emualliug
    emualliug WRInaute occasionnel
    Inscrit:
    1 Février 2020
    Messages:
    449
    J'aime reçus:
    104
    Alors… oui et non.

    Ce qu'il faut d'abord éviter, c'est la pluralité des .htaccess. Pour un site example.com/site/page/category/dev/web/php/article123456.htm s’il y a un .htacess à chaque "dossier", ça fait 7 fichiers à ouvrir, lire, et interpréter. Déjà, c'est pas idéal niveau performances (mais c'est rarement ça qui va pénaliser de façon substantielle la perf globale d'un site), c'est surtout l'enfer niveau maintenance : cela fait 7 fichiers à maintenir, et ça n'invite pas à tout régler en un minimum de règles avec, surtout, un minimum de redirections (qui là va par contre impacter la perf globale d'un site).

    Si tu as la possibilité d'avoir une seule RewriteRule, plutôt que plusieurs RewriteRule pour traiter une problématique similaire, c'est avant tout un gain de lisibilité pour le développeur. Le gain de performance final sera minime sinon nul.

    Ce que je disais à propos des dossiers "en dur", c'est que ça n'a pas beaucoup de sens de mettre ses fichiers sur le serveur de la même façon que sont les URL. Surtout c'est problématique d'avoir plusieurs "points d'entrée" sans justifications.

    Ce que je préfère faire, c'est de n'avoir qu'un seul point d'entrée pour le site : index.php ; le reste de l'URL est "interprété" par ce fichier qui va renvoyer vers les scripts pertinents qui sont placés dans l’arborescence du site à un endroit auquel l'utilisateur ne peut pas directement accéder. Si je mets d'autres points d'entrée, c'est qu'il y a une bonne raison, ou un sous-site plus ou moins autonome, ou un traitement radicalement différent (un ajax.php par exemple).

    Ne pas négliger les gains de temps côté développement / maintenance. Un code mieux fait est plus simple à maintenir, les erreurs sont plus simples à déceler et à corriger, le site est plus facile à faire évoluer.
     
    YO31 apprécie ceci.
  5. Marie-Aude
    Marie-Aude WRInaute accro
    Inscrit:
    5 Juin 2006
    Messages:
    16 726
    J'aime reçus:
    171
    C'est pas aussi simple que ça. C'est vrai quand on peux faire des règles dynamiques. Par contre, quand on est obligé de faire des règles à la main (rediriger toto vers titi), faire des htaccess dédiés dans chaque dossier concerné allège la charge :
    1- tu renvoies directement à la bonne adresse concernées (et tu commences par le htaccess le plus spécifique)
    2- c'est généralement plus lisible

    Oui, mais chaque fichier pour un point spécifique.
    Si besoin est.... je n'ai jamais vu ce type de structure en fait, mais plutôt plusieurs htaccess dans des dossiers "de plus bas niveau".

    Mouais... perso je ne suis pas fana de la regex hyper compliquée qui est illisible au bout de 15 jours parce que tu as oublié, et je préfère décomposer même dans le même htaccess

    Par contre, tout ce que je dis concerne des redirections de correction, des trucs qui ont bougé. Pour la réécriture des urls de base d'un site, tu as parfaitement raison
     
    YO31 apprécie ceci.
  6. YO31
    YO31 Nouveau WRInaute
    Inscrit:
    3 Février 2022
    Messages:
    3
    J'aime reçus:
    0
    Bonjour,

    Lors de la réécriture; il n'est donc pas conseillé de suivre la hiérarchie originale de l'ancienne url.

    Donc si je comprends bien... ma réécriture devrait plus ressembler à cette structure :

    /cours-guitare-82000.php au lieu de /cours/guitare/82000.php : qui cette dernière URL conserve le chemin des différents dossiers d’où se trouve cette page.

    Merci beaucoup pour ces compléments d'informations !
     
  7. Marie-Aude
    Marie-Aude WRInaute accro
    Inscrit:
    5 Juin 2006
    Messages:
    16 726
    J'aime reçus:
    171
    ça dépends

    si example.com/cours/ montre une liste de tous tes cours, ça peut être intéressant de le laisser dans l'url.
     
  8. emualliug
    emualliug WRInaute occasionnel
    Inscrit:
    1 Février 2020
    Messages:
    449
    J'aime reçus:
    104
    Non, ce n'est pas ça. Sur la réécriture, tu fais ce que tu veux.

    Je parlais de l'emplacement des fichiers PHP dans l'arborescence du site. Tu peux mettre tes fichiers PHP un peu où tu veux, mais suivre l'arborescence de l'URL n'est généralement pas la manière la plus adaptée de ranger les fichiers. Et faire appel à plusieurs points d'entrée, pas la meilleure façon d'avoir un site efficient et facile à coder.
     
    Marie-Aude apprécie ceci.
Chargement...
Similar Threads - Problème rewriting redirection Forum Date
Problème redirection de 404 + Rewriting URL Rewriting et .htaccess 23 Janvier 2015
Problème avec URL rewriting après redirection 301 URL Rewriting et .htaccess 5 Novembre 2014
Probleme de redirection sans URL rewriting URL Rewriting et .htaccess 30 Janvier 2011
Problème redirections pour URL rewriting URL Rewriting et .htaccess 23 Octobre 2009
Problème url rewriting et redirection 301 :( Développement d'un site Web ou d'une appli mobile 26 Février 2009
Probleme URL Rewriting et de redirection URL Rewriting et .htaccess 13 Septembre 2007
Problème de redirection 301 avec l'URL Rewriting URL Rewriting et .htaccess 3 Septembre 2007
Problème URL rewriting URL Rewriting et .htaccess 16 Février 2017
Problème accent URL Rewriting et .htaccess URL Rewriting et .htaccess 4 Novembre 2016
Problème d'url-rewriting sous Nginx Développement d'un site Web ou d'une appli mobile 16 Août 2016
rewriting probleme avec tiret soulignement, espace, accent et. Netlinking, backlinks, liens et redirections 9 Septembre 2015
URL Rewriting qui pose problème URL Rewriting et .htaccess 17 Mars 2015
Probleme d'url double apres url rewriting URL Rewriting et .htaccess 12 Mars 2015
Augmentation des URL non suivies (Problème Rewriting ?) URL Rewriting et .htaccess 20 Novembre 2014
Problème URL Rewriting Débuter en référencement 1 Septembre 2014
Problème d'URL Rewriting Débuter en référencement 10 Juin 2014
Problème meta en double à cause du rewriting ? URL Rewriting et .htaccess 20 Mars 2014
Problème Rewriting chez 1&1 URL Rewriting et .htaccess 17 Décembre 2013
Problème d'url Rewriting avec des variables URL Rewriting et .htaccess 23 Novembre 2013
probleme URL Rewriting URL Rewriting et .htaccess 19 Octobre 2013