Aller au contenu

Sujets conseillés

Posté

Bonsoir.

Lorsqu'elles veulent citer une url ou établir un lien vers une page, beaucoup de personnes ajoutent un slash en fin d'url...

Lors de l'accès à l'url en question, cela provoque souvent une belle pagaille car tous les adressages relatifs contenus dans la page sont perdus...

Existe t-il un moyen (url rewriting, conf d'Apache, ...?) qui permettrait, à l'arrivée de supprimer ces slashes inutiles en fin d'url ?

Merci.

Posté

Un petit code rapide en PHP à mettre avant tout affichage de code HTML. A retester mais ça devrait fonctionner. Il y a même surement moyen de simplifier l'écriture.

$UriEnCours=$_SERVER['REQUEST_URI'];
$UriEnCoursControle=$UriEnCours;
while(strpos($UriEnCoursControle,"//")!==false){
$UriEnCoursControle=str_replace("//","/",$UriEnCoursControle);
}
if($UriEnCoursControle!=$UriEnCours){
header("Status: 301 Moved Permanently");
header("Location: ".$UriEnCoursControle);
exit();
}

Posté

La solution php est effectivement très intéressante dans le cas ou Apache ne saurait pas le faire...

Posté

Apache SAIT le faire, bien évidemment.

Avec l'utilisation du .htaccess, ça donnerait :

RewriteEngine  on
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+[^/])$ $1/ [R]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.+)/$ $1 [R]

Si je ne me suis pas loupé, ces règles ajoutent un "trailing slash" aux répertoires, et le retirent pour les fichiers.

Posté

Merci Dan ! C'est beaucoup mieux car seules les url vraiment valides fonctionnent (un gros progrès).

Par-contre en cas d'urls terminées par un slash :

h*tp://www.toto.com/pages/

h*tp://www.toto.com/pages/accueil.php/

Apache tente de remonter à : /home/toto/webpages/home ( pour info, mon DocumentRoot est : /home/toto/webpages )

étrange non ?

Posté

Pour retirer le slash en fin de nom de fichier, la règle suivante semble bien fonctionner :

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.+)/$ /$1 [R=301,L]

Avec une petite redirection 301, histoire que les robots n'y reviennent pas trop...

Ca peut économiser quelques tonnes d'erreurs 404 dans les logs, et l'air de rien, beaucoup de sites sont mal protégés contre cette habitude de mettre un slash en fin d'url.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...