ma redirection ne fonctionne pas

Discussion dans 'URL Rewriting et .htaccess' créé par flexi2202, 18 Août 2021.

  1. flexi2202
    flexi2202 WRInaute discret
    Inscrit:
    29 Mars 2009
    Messages:
    91
    J'aime reçus:
    1
  2. emualliug
    emualliug WRInaute occasionnel
    Inscrit:
    1 Février 2020
    Messages:
    371
    J'aime reçus:
    73
    Je suppose que c'est l'inverse, que https://phil.pecheperle.be/index.php/quelle-plombee-pour-la-peche-a-la-perle.php soit interprété comme https://phil.pecheperle.be/quelle-plombee-pour-la-peche-a-la-perle.php.

    À tout hasard https://phil.pecheperle.be/quelle-plombee-pour-la-peche-a-la-perle.php ne correspondrait-elle pas à un fichier dans ton arborescence ? auquel cas, la ``RewriteCond !-f`` exclue l'application de la ``RewriteRule``.

    Ce serait au passage assez cohérent, car c'est le genre de chose que https://htaccess.madewithlove.be/ ne peut pas gérer (et c'est assez logique, il ne connaît pas ton arborescence).

    Et au passage, je ne comprends pas quel intérêt à avoir une telle architecture d'URL. Dans l'absolu, rien n'interdit à ce qu'on ait une URL du style example.com/chasse-appat.htm/chasse-a-la-myrtille.htm, mais c'est assez déroutant pour l'utilisateur, les URL empruntent la construction des chemins de fichiers, pour l'utilisateur example.com/chasse-appat.htm est perçu comme un fichier (même si rien n'interdit de nommer un répertoire de cette façon), il ne s'attend donc pas ce que ce soit un répertoire qui contienne un autre fichier.

    De plus, de façon traditionnelle, on fait plutôt disparaître les index.php, index.html ou index.html. Vu que ce sont les fichiers "naturellement" choisis pas le serveur dans un répertoire pour être servis à l'utilisateur, on préfère généralement example.com à example.com/index.htm ou example.com/categorie/rubrique à example.com/categorie/rubrique/index.htm. "index.htm" est "sous-entendu", ne pas le faire apparaître rend l'URL plus lisible. Par ailleurs moins de caractères à noter, recopier, échanger, c'est moins de faute possible pour l'internaute.

    Une fois encore, ce n'est pas "faux" techniquement parlant, juste déroutant.
     
    #2 emualliug, 18 Août 2021
    Dernière édition: 18 Août 2021
  3. flexi2202
    flexi2202 WRInaute discret
    Inscrit:
    29 Mars 2009
    Messages:
    91
    J'aime reçus:
    1
  4. emualliug
    emualliug WRInaute occasionnel
    Inscrit:
    1 Février 2020
    Messages:
    371
    J'aime reçus:
    73
    Pour commencer, toute réécriture d'URL n'est pas une redirection.

    On peut demander une redirection lors d'une ``RewriteRule`` (drapeau R), mais ce n'est pas nécessairement ce que tu souhaites. La redirection dira au navigateur de recharger la page avec la nouvelle URL. La réécriture (sans redirection) dira au serveur de poursuivre "comme si" l'URL était la nouvelle, mais l'URL affichée, elle, ne change pas.

    J'insiste un peu, mais il faut comprendre ce que fait mod_rewrite (le module d'Apache derrière les réécritures d'URL) : il dit au serveur que bien que l'utilisateur a suivi l'URL "A", pour la suite du traitement, il faut faire comme s'il avait suivi l'URL "B".

    Sans entrer dans les détails, ça permet pas mal de choses, notamment avoir des URL moins "cryptiques" qu'avec des query du style "example.com/blog/editer-commentaire.php?articleId=1254&commentaire=157". Cela a également été largement utilisé (et l'est toujours) pour "booster" le SEO en faisant apparaître des mots clés dans l'URL mais ignorés lors du traitement, par exemple présenter "example.com/blog/guide-achat-centrale-vapeur_12547" qui renvoie vers "example.com/blog.php?article=12547" vers laquelle aurait été indifféremment envoyée "example.com/blog/tiens-voila-du-boudin-pour-les-alsaciens-les-suisses-et-les-lorrains_12547" (en paramétrant la réécriture pour ne reprendre que les chiffres à la fin). Regarde les URL de ce forum, cela utilise ce genre de technique.

    Ensuite, je n'ai toujours pas le sentiment que tu veuilles "rediriger" https://phil.pecheperle.be/index.php/quelle-plombee-pour-la-peche-a-la-perle.php vers https://phil.pecheperle.be/quelle-plombee-pour-la-peche-a-la-perle.php mais faire que la seconde URL soit interprétée comme si l'internaute avait entré la première.

    Pour reprendre l'interface de https://htaccess.madewithlove.be/, tu places "https://phil.pecheperle.be/index.php/quelle-plombee-pour-la-peche-a-la-perle.php" dans le champ texte en haut, et tu espères obtenir "https://phil.pecheperle.be/quelle-plombee-pour-la-peche-a-la-perle.php" en bas ?

    Si c'est bien l'effet recherché, alors en effet la directive ``RewriteCond %{REQUEST_FILENAME} !-d`` ne devrait pas être bloquante

    Il faudrait voir l'ensemble du .htaccess, car il est possible que d'autres directives viennent en contradiction de celles-ci.
     
  5. flexi2202
    flexi2202 WRInaute discret
    Inscrit:
    29 Mars 2009
    Messages:
    91
    J'aime reçus:
    1
    avant toute chose un très grand merci emualliug
    pour ce temps a m avoir explique cela
    c est vrai que pour pour moi tout cela est nouveau et je suis un peu beaucoup perdu
    oui j avais compris pour ce qui est du changement de l url avec
    example.com/blog/editer-commentaire.php?articleId=1254&commentaire=157
    d ailleurs j ai refais l exercice et cela fonctionne a merveille
    mais j attends que tout soit réglé au niveau site avant de l appliquer ...

    alors pour que cela soit plus compréhensible de ce que je désire effectuer et qui m embête depuis des semaines
    c est lorsque je fais une recherche sur google du style
    "quelle plombee pour la peche a la perle"
    en supposant que l utilisateur recherche la plombée pour la pêche a la perle
    il va me donner dans la première page ce lien maudit
    https://phil.pecheperle.be/index.php/quelle-plombee-pour-la-peche-a-la-perle.php
    et lorsque l utilisateur ca cliquer dessus je serais rediriger vers l accueil de mon site

    alors que cela devrait être redirige vers cette page

    https://phil.pecheperle.be/quelle-plombee-pour-la-peche-a-la-perle.php

    ce qui me semble plus logique ....

    voici a tout hasard mon fichier htaccess
    il est évident que toute les remarques sont les bienvenues
    et encore merci pour l aide

    Code:
    ErrorDocument 404 /page-404.php
    
    RewriteCond %{QUERY_STRING} ^$
    RewriteRule ^index.php$ / [L]
    
    # Block wp-includes folder and files
    #<IfModule mod_rewrite.c>
    #RewriteEngine On
    #RewriteBase /
    #RewriteRule ^wp-admin/includes/ - [F,L]
    #RewriteRule !^wp-includes/ - [S=3]
    #RewriteRule ^wp-includes/.*\.php$ - [F,L]
    #RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
    #RewriteRule ^wp-includes/theme-compat/ - [F,L]
    #</IfModule>
    
    # Désactiver l'affichage du contenu des répertoires
    Options All -Indexes
    
    # Masquer les informations du serveur
    ServerSignature Off
    
    # Activation du suivi des liens symboliques
    Options +FollowSymLinks
    
    # Choix du fuseau horaire
    SetEnv TZ Europe/Paris
    
    # Encodage par défaut des fichiers textes et HTML
    AddDefaultCharset UTF-8
    
    # Protéger les fichiers .htaccess et .htpasswds
    <Files ~ "^.*\.([Hh][Tt][AaPp])">
    order allow,deny
    deny from all
    satisfy all
    </Files>
    
    # Désactiver le hotlinking de vos images
    #RewriteEngine On
    #RewriteCond %{HTTP_REFERER} !^$
    #RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?https://phil.pecheperle.be [NC]
    #RewriteRule \.(jpg|jpeg|png|gif)$ http://fakeimg.pl/400x200/?text=Pas_touche_aux_images [NC,R,L]
    
    
    # Page de maintenance
    #RewriteEngine on
    #RewriteCond %{REQUEST_URI} !/maintenance.html$
    #RewriteCond %{REMOTE_ADDR} !^xxx\.xxx\.xxx\.xxx
    #RewriteRule $ /maintenance.html [R=302,L]
    
    # Mise en cache des fichiers dans le navigateur
    <IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault "access plus 1 month"
    
    ExpiresByType text/html "access plus 0 seconds"
    ExpiresByType text/xml "access plus 0 seconds"
    ExpiresByType application/xml "access plus 0 seconds"
    ExpiresByType application/json "access plus 0 seconds"
    ExpiresByType application/pdf "access plus 0 seconds"
    
    ExpiresByType application/rss+xml "access plus 1 hour"
    ExpiresByType application/atom+xml "access plus 1 hour"
    
    ExpiresByType application/x-font-ttf "access plus 1 month"
    ExpiresByType font/opentype "access plus 1 month"
    ExpiresByType application/x-font-woff "access plus 1 month"
    ExpiresByType application/x-font-woff2 "access plus 1 month"
    ExpiresByType image/svg+xml "access plus 1 month"
    ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
    
    ExpiresByType image/jpg "access plus 1 month"
    ExpiresByType image/jpeg "access plus 1 month"
    ExpiresByType image/gif "access plus 1 month"
    ExpiresByType image/png "access plus 1 month"
    
    ExpiresByType video/ogg "access plus 1 month"
    ExpiresByType audio/ogg "access plus 1 month"
    ExpiresByType video/mp4 "access plus 1 month"
    ExpiresByType video/webm "access plus 1 month"
    
    ExpiresByType text/css "access plus 6 month"
    ExpiresByType application/javascript "access plus 6 month"
    
    ExpiresByType application/x-shockwave-flash "access plus 1 week"
    ExpiresByType image/x-icon "access plus 1 week"
    
    </IfModule>
    
    # En-têtes
    Header unset ETag
    FileETag None
    
    <ifModule mod_headers.c> 
    <filesMatch "\.(ico|jpe?g|png|gif|swf)$"> 
        Header set Cache-Control "public" 
    </filesMatch> 
    <filesMatch "\.(css)$"> 
        Header set Cache-Control "public" 
    </filesMatch> 
    <filesMatch "\.(js)$"> 
        Header set Cache-Control "private" 
    </filesMatch> 
    <filesMatch "\.(x?html?|php)$"> 
        Header set Cache-Control "private, must-revalidate"
    </filesMatch>
    </ifModule>
    
    # Compressions des fichiers statiques
    <IfModule mod_deflate.c>
        AddOutputFilterByType DEFLATE text/xhtml text/html text/plain text/xml text/javascript application/x-javascript text/css
        BrowserMatch ^Mozilla/4 gzip-only-text/html
        BrowserMatch ^Mozilla/4\.0[678] no-gzip
        BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
        SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
        Header append Vary User-Agent env=!dont-vary
    </IfModule> 
    
    AddOutputFilterByType DEFLATE text/html 
    AddOutputFilterByType DEFLATE text/plain 
    AddOutputFilterByType DEFLATE text/xml 
    AddOutputFilterByType DEFLATE text/css 
    AddOutputFilterByType DEFLATE text/javascript
    AddOutputFilterByType DEFLATE font/opentype
    AddOutputFilterByType DEFLATE application/rss+xml
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE application/json
    
    # Protection contre les injections de fichiers
    RewriteCond %{REQUEST_METHOD} GET
    RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=http:// [OR]
    RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=(\.\.//?)+ [OR]
    RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=/([a-z0-9_.]//?)+ [NC]
    RewriteRule .* - [F]
    
    # Protections diverses (XSS, clickjacking et MIME-Type sniffing)
    <ifModule mod_headers.c>
    Header set X-XSS-Protection "1; mode=block"
    Header always append X-Frame-Options SAMEORIGIN
    Header set X-Content-Type-Options: "nosniff”
    </ifModule>
    
    #RewriteEngine On
    #RewriteCond %{REQUEST_FILENAME} !-f
    #RewriteCond %{REQUEST_FILENAME} !-d
    #RewriteRule ^index.php(.*)$ $1 [L]
    
    Header always set Content-Security-Policy: upgrade-insecure-requests
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^index.php(.*)$ $1 [L]
     
  6. flexi2202
    flexi2202 WRInaute discret
    Inscrit:
    29 Mars 2009
    Messages:
    91
    J'aime reçus:
    1
    je viens d essayer ceci

    Code:
    RedirectPermanent /index.php/quelle-plombee-pour-la-peche-a-la-perle.php https://phil.pecheperle.be/quelle-plombee-pour-la-peche-a-la-perle.php
    et cela fonctionne
    mais a présent je souhaite que google puisse comprendre que c changement est définitif
     
  7. emualliug
    emualliug WRInaute occasionnel
    Inscrit:
    1 Février 2020
    Messages:
    371
    J'aime reçus:
    73
    Ok, avec la description du besoin, je comprend mieux où tu veux en venir. Je ne voyais pas d'où pouvait venir https://phil.pecheperle.be/index.php/quelle-plombee-pour-la-peche-a-la-perle.php, d'où ma confusion sur ce que tu souhaitais faire.

    Lorsque tu es en présence d'une URL référencée qui n'est pas ton URL de choix, la première chose à faire c'est d'identifier pourquoi cette URL a été référencée. Si Google a référencé https://phil.pecheperle.be/index.php/quelle-plombee-pour-la-peche-a-la-perle.php, c'est que ce lien a dû lui être fourni. Probablement un attribut href mal formaté ("trop" relative). Je n'ai pas regardé de façon approfondie, mais j'ai le sentiment que les valeurs href de la page d'accueil ont depuis été réécrites, puisqu'elles sont désormais absolues.
     
  8. flexi2202
    flexi2202 WRInaute discret
    Inscrit:
    29 Mars 2009
    Messages:
    91
    J'aime reçus:
    1
    Merci pour la réponse et surtout cet éclaircissement
    je pense que l on va finir par retrouver le pourquoi du comment du problème

    au tout début de mon site (pour rappel je n ai que deux concurrents sur cette thématique de pêche a la perle
    et donc d office j ai été propulsé par google dans les premières pages )

    mais a ce moment on avait acces a mon site via cette adresse

    https://phil.pecheperle.be/index.php
    depuis lors cela a change et c est devenu https://phil.pecheperle.be suite a une manipulation dans le htaccess

    et effectivement dans mes pages ce sont tous des liens relatif
    donc Google a référencé mon site en index.php
    et donc a tout simplement ajouter après index.php mon lien relatif et cela a foutu le bazar

    je vais donc mettre tous les liens de mon site en absolu
     
  9. emualliug
    emualliug WRInaute occasionnel
    Inscrit:
    1 Février 2020
    Messages:
    371
    J'aime reçus:
    73
    Chacun sa pratique, mais pour les liens internes, je préfère utiliser des liens relatifs à la racine (par exemple "/css/style.css") plutôt que des liens absolus (du genre "https://www.example.com/css/style.css"). Les liens relatifs à la page sont par contre une source d'erreurs.

    Outre que les liens relatifs à la racine du site sont plus commodes, ils permettent de facilement passer d'un mode développement en local à un déploiement en ligne. En cas de modification de l'hôte, c'est également tout bénef. Il me semble également que c'est mieux en cas de téléchargement de la page.
     
  10. flexi2202
    flexi2202 WRInaute discret
    Inscrit:
    29 Mars 2009
    Messages:
    91
    J'aime reçus:
    1
    merci pour la réponse
    oui voila c est bien ce que je pensais et que je compte mettre en place les liens des relatifs aux pages seront en absolu et les liens relatifs au css ect... en relatif

    enfin mon soucis est résolu encore mille fois merci
     
Chargement...
Similar Threads - redirection fonctionne Forum Date
Redirection non fonctionnelle URL Rewriting et .htaccess 18 Septembre 2020
redirection .htaccess index.php ne fonctionne pas URL Rewriting et .htaccess 13 Décembre 2018
Redirection transparente ne fonctionne pas :-( URL Rewriting et .htaccess 2 Novembre 2018
redirection url principale ne fonctionne pas Netlinking, backlinks, liens et redirections 2 Février 2017
Redirection simple vers https qui ne fonctionne pas Débuter en référencement 29 Février 2016
Mes redirections ne fonctionnent pas Problèmes de référencement spécifiques à vos sites 8 Octobre 2015
Ma redirection 301 ne fonctionne pas Administration d'un site Web 19 Mars 2015
script de redirection fonctionne de maniere aleatoire Développement d'un site Web ou d'une appli mobile 25 Septembre 2014
Redirection http vers www ne fonctionne pas OVH URL Rewriting et .htaccess 6 Juin 2014
Redirection 301 : ne fonctionne pas du tout URL Rewriting et .htaccess 16 Février 2014