ma redirection ne fonctionne pas

WRInaute impliqué
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.
 
Dernière édition:
WRInaute impliqué
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.
 
WRInaute discret
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]
 
WRInaute discret
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
 
WRInaute impliqué
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.
 
WRInaute discret
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
 
WRInaute impliqué
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.
 
WRInaute discret
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
 
Discussions similaires
Haut