Salutation tout le monde !
Depuis plusieurs jours j'essaie de gérer mes URL pour qu'elles s'affichent de manière propre, et j'ai épluché de nombreux forums à la recherche des réponses à mes question. Je me suis relativement familiarisé avec la RewriteRule, et j'ai avancé sur mon problème.
Concrètement : mon site est installé sans cms, dans le dossier /www situé à la racine. J'ai bien le ovhconfig à la racine et mon htaccess dans /www. C'est avec ce dernier fichier que je travaille puisque je suis sur un mutualisé. Au moment présent, mon htaccess est composé de ces règles là :
#Require all denied
#Options +FollowSymLinks -MultiViews
#Require all denied
#Options +FollowSymLinks -MultiViews
RewriteEngine On
# alias de domaine
## tout ce qui ne se termine pas par le domaine cible est redirigé sur le domaine cible
RewriteCond %{HTTP_HOST} !ianus.me$ NC]
RewriteRule ^ https://ianus.me%{REQUEST_URI} [R=301,NE,QSA]
## www -> no-www
RewriteCond %{HTTP_HOST} ^www.(.+)$
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,NE,QSA]
## http -> https
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,NE,QSA]
## web -> 1.COURWEB
RewriteRule ^web([/])$ 1.COURWEB
Les premières lignes sont en commentaires, je ne les utilisées que pour effectuer certains test et les ai gardées dans l'éventualité où elles me serviraient plus tard, enfin bref, ça me concerne ne vous inquiétez pas pour ça.
Touts mes redirections fonctionnent sans problème, celle qui m'occupe aujourd'hui est seulement la dernière, qui vise à rediriger les requêtes "ianus.me/chemin_propre" vers "ianus.me/arborescence_effective. C'est au final assez simple, je veux juste nettoyer mes URL.
Après de nombreux tests, le meilleur résultat que j'ai obtenu redirigeait "ianus.me/web" vers ianus.me/1.COURWEB et "ianus.me/web/" faisait la même chose, tout en gardant l'url propre (c'est à dire celle en /web). Malheureusement, dans le première option, sans le "/", la redirection se faisait de telle manière que mon navigateur (testé sous firefox et chrome) réécrivait l'url eux-mêmes, et le résultat correspondait plus à une redirection classique qu'à une réécriture d'URL
Dans ma version actuelle du .htaccess c'est bien différent car l'expression sans le '/' ne redirige vers rien et celle avec le '/' redirige vers "ianus.me/1.COURWEB", en réécrivant l'URL, tout ce que je ne veux pas donc. Je vais donc continuer à tester différentes options, en me formant petit à petit au langage d'apache, mais j'ai peur de galérer énormément, aussi toute aide sera la bienvenue.
Quand j'ai découvert que rajouter le '/' me permettait d'obtenir le résultat que je voulais, je me suis tout de suite dit que j'étais sur une piste, je me demande si ce n'est pas lié à l'emplacement du htaccess ou du paramétrage du rewritebase. Dans cette [vidéo l'auteur obtient exactement le résultat que je veux de la manière le plus simple qui soit, mais étrangement ça ne fonctionne pas chez moi, et l'url est réécrite dans mon navigateur. J'imagine que c'est dû à la différence de configurations entre lui et moi, je suis en hébergement mutualisé, il est sur un serveur local, ça doit jouer.
Enfin bref, merci beaucoup pour avoir supporté la lecture de ce sujet, j'espère que vous saurez m'aider
Cordialement
laag
> réécrivait l'url eux-mêmes,
ne parle pas de redirection, ce que tu cherches et montres est une réécriture
si tu as un redirection 301 en cache dans ton navigateur, vider le cache
et un navigateur n'est pas le bon outils pour tester les redirections
```text
curl --head https://ianus.me/web
HTTP/2 404
```
actuellement pas de redirection donc, un "not found 404"
> différence de configurations entre lui et moi,
non… normalement
Ok, je suis en train de lire des cours sur les regex, je vais corriger certaines erreurs.
C'est vrai que le navigateur n'est pas très pratique, mais avec le raccourci ctrl+shift+suppr vider le cache est relativement rapide. Sous windows quel outil conseilles-tu d'utiliser pour tester mes réécritures d'url ?
edit : Maintenant que je comprends mieux les regex j'ai réécrit ma dernière ligne htaccess comme suit :
## web -> 1.COURWEB
RewriteRule ^web([/]*)$ 1.COURWEB
maintenant "ianus.me/web" et "ianus.me/web/" me conduisent bien à "ianus.me/1.COURWEB", ce que je veux, mais j'ai toujours le problème dont je parlais, c'est à dire que mon navigateur continue de m'afficher "ianus.me/1.COURWEB" au lieu de "ianus.me/web". Je suis sûr que c'est quelque chose de tout bête, mais je ne trouve pas.
> Sous windows quel outil conseilles-tu d'utiliser pour tester mes réécritures d'url ?
dans le temps j'avais mon script php pour ça
avant d'installer curl sous mingw
aujourd'hui avec w10: curl sur bash dans debian
tu ne dois pas faire de redirection:
```text
curl --head https://ianus.me/web
HTTP/2 301
location: https://ianus.me:443/1.COURWEB/
```
ce n'est aps une "jolie" url: `https://ianus.me:443/1.COURWEB/`
Je ne comprends pas ce que tu dis, je veux justement une "jolie" url
d'ailleurs c'est marrant moi dans cmd quand je copie ton curl --head j'obtiens HTTP/1.1 et pas HTTP/2
edit : je télécharge mingw, j'imagine que j'aurai le même résultat que toi à partir de bash dans debian
edit : pour que ce soit clair, j'aimerais à la fois une jolie URL, et une arborescence moche. Je suis un peu maniaque mais je sais que c'est possible simplement pour l'avoir vu faire (sans que je comprenne pourquoi ça ne fonctionne pas chez moi). Je veux que l'URL affichée dans la barre d'adresse du navigateur diffère du nom des dossiers présents sur le serveur.
> HTTP/1.1
c'est http
HTTP2, c'est https
pour le reste j'ai pas le temps de tester tout de suite, mais pourquoi un groupement `()` si tu ne réutilise pas `$1`?
une classe `[/]` c'est curieux
`^web/` devrait suffire
Oui tu as raison, j'ai modifié ma ligne ainsi :
`RewriteRule ^web/*$ 1.COURWEB`
Mais ça ne change rien à mon problème. Ne t'inquiètes pas je te remercie pour ta présence, ça fait vraiment du bien de se sentir accompagné, on se sent vite désemparé lorsqu'on s'attaque à des problèmes un peu trop ambitieux pour ses compétences. Peut être que quelqu'un aura le temps d'effectuer les tests ou aura la réponse à ma question.
mon `.htaccess` :
```text
RewriteEngine On
## www -> no-www
RewriteCond %{HTTP_HOST} ^www.(.+)$
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L,NE,QSA]
## http -> https
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE,QSA]
RewriteRule ^web/?.$ toto
```
(mon fichier `toto` existe)
fonctionnement attendu constaté:
```text
curl --head -XGET https://kyo./web/
HTTP/2 200
curl https://kyo./web/
here is toto
```
pas de redirections, affichage du fichier cible
—
selon le niveau de contrainte souhaité, testé ok:
```text
RewriteRule ^web/?.$ toto
RewriteRule ^web/? toto
RewriteRule ^web/ toto
RewriteRule ^web toto
RewriteRule web toto
```
tu n'as pas de .htacces à un niveau supérieur qui viendrait interférer?
> je télécharge mingw,
non, c'est vieillot, maintenant que MS essaye de se mettre à niveau en informatique, profite de bash/debian
(de mémoire avec un de mes padawan, il a un bug bash sous W10, tous les scripts ne passeront pas, mais c'est une bonne base)
tu n'as pas de .htacces à un niveau supérieur qui viendrait interférer?
Eh bien non, pour vérifier je viens même de renommer ovhconfig pour être sûr qu'il n'interfère pas. Mon .htaccess se trouve dans /www et c'est le seul que j'ai
Pour m'aider dans mes recherches les réponses aux questions pourraient m'aider :
Mes problèmes de réécriture d'URL pourraient-ils êtres liés à du code html ? Une balise header dans mon index.php par exemple ?
Pourraient-ils être liés à l'absence de règle ([R=301,NE,QSA])
cela pourrait-il être lié à mon navigateur (alors que j'ai testé sous chrome et firefox) ?
La commande RewriteRule peut-elle avoir cet effet, consistant à me rediriger vers une autre URL, ou est ce qu'il y a forcément un fichier quelque part responsable de cette action ?
Merci beaucoup ![]()
> renommer ovhconfig pour être sûr qu'il n'interfère pas
sans rapport
> Mes problèmes de réécriture d'URL pourraient-ils êtres liés à du code html
non
> Une balise header dans mon index.php par exemple ?
non dans ton cas: `content-type: text/html; charset=iso-8859-1`
> Pourraient-ils être liés à l'absence de règle ([R=301,NE,QSA])
justement, il n'en faut pas: réécriture
> cela pourrait-il être lié à mon navigateur
oui, d'où curl, mais avec curl: redirect
> RewriteRule peut être avoir cet effet, consistant à me rediriger vers une autre URL,
aussi, avec `[R]`
je viens de tester sur Ovh, fonctionnement attendu comme décrit ci-dessus
justement, il n'en faut pas: réécriture
Ben attends, je n'avais pas compris ça (pourtant tu as insisté mais c'était sans doute pas assez clair).
Voici mon .htaccess :
#Require all denied
#Options +FollowSymLinks -MultiViews
RewriteEngine On
# alias de domaine
## tout ce qui ne se termine pas par le domaine cible est redirigé sur le domaine cible
RewriteCond %{HTTP_HOST} !ianus.me$ [NC]
RewriteRule ^ https://ianus.me%{REQUEST_URI} [R=301,NE,QSA]
## www -> no-www
RewriteCond %{HTTP_HOST} ^www.(.+)$
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,NE,QSA]
## http -> https
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,NE,QSA]
## web -> 1.COURWEB
RewriteRule ^web/$ 1.COURWEB
RewriteRule ^web/?.$ 1.COURWEB
RewriteRule ^web/? 1.COURWEB
RewriteRule ^web/ 1.COURWEB
RewriteRule ^web 1.COURWEB
RewriteRule web 1.COURWEB
ça m'étonnerait quand même je viens de tester en supprimant toutes les règles précédentes mais rien n'a changé, l'url qui s'affiche quand je tape "ianus.me/web" reste "ianus.me/1.COURWEB".
je t'ai montré mon .htaccess
avec des alternatives sur le rewrite… ne pas tout mettre
pour le reste, ton .htaccess n'est pas actif, ne me demande pas pourquoi, ou tu ne travailles pas sur le bon fichier
pas de restauration ftp en cours?
Excuses moi j'ai parfois du mal à comprendre tes formulations. Je vais tenter avec ton .htaccess
ne pas tout mettre
qu'est ce que tu entends par là ? Je t'avoue que j'ai fait quelques copier coller sans trop réfléchir, quelles règles sont pertinentes (la R301 au moins j'imagine ?), lesquelles surchargent la commande pour rien ?
pour le reste, ton .htaccess n'est pas actif, ne me demande pas pourquoi, ou tu ne travailles pas sur le bon fichier
Encore une fois que veux-tu dire ? C'est pourtant bien mon .htaccess qui fait crash mon site quand je mets des conneries dedans, et lui qui me redirige sur les pages adéquates non ? Comment ça il n'est pas actif ?
pas de restauration ftp en cours?
J'ai dû redémarrer plusieurs fois pour installer le bash et le faire tourner, je suis en train d'installer curl. Au dernier démarrage je n'arrivais pas à me connecter en ftp via fillezilla, c'était l'horreur j'avais :
Erreur : Connection interrompue après 20 secondes d'inactivité
Erreur : Impossible d'établir une connexion au serveur
Après plusieurs check de connexion (je suis à la BU de mon université, en 4g) tout est revenu dans l'ordre. Ce problème dure au moins depuis plusieurs jours, et je n'ai aucun transfert en cours dans filezilla. Tout au plus j'ai demandé l'activation de DNSSEC de mon domaine, je ne sais pas si ça a pu jouer, mais la maintenance doit être terminée puisque j'ai reçu le mail me confirmation que l'activation était terminée.
EDIT : j'ai testé avec ton .htaccess, rien ne change, la même redirection occure. J'ai des déconnexions intempestives du forum aussi c'est assez gênant. J'imagine que c'est la faute à ma connexion mais j'ai fait plusieurs tests et ça m'avait l'air dans l'ensemble très positif, j'ai donc des doutes sur les serveurs d'ovh
j'ai tenté les curl du coup, j'ai obtenu la même chose que toi. Tu m'as dit que ça fonctionnait très bien sur test à toi avec "toto", c'était un serveur local ou hébergé quelque part ? Peut être que je peux tenter de faire ce test moi même d'une autre manière pour voir si j'y arrive ? Ce qui m'étonne c'est qu'hier j'étais parvenu à obtenir la réécriture que je voulais en mettant le '/' après "web"
> (la R301 au moins j'imagine ?)
non! ça c'est une redirection, relire ce sujet
> Connection interrompue après 20 secondes d'inactivité
problème réseau de ton côté
> Encore une fois que veux-tu dire
ne me demande pas pourquoi
no comments…
>avec "toto"
toto est un fichier avec un contenu `here is toto` comme montré ci-dessus
> mettant le '/'
pas obligatoire, tu augmentes la contrainte et élimine /webexemple par exemple et tu imposes un slash final
> j'ai donc des doutes sur les serveurs d'ovh
chez Ovh ça marche un peu par hasard, mais là je doute
je n'ai plus d'idée
si tu veux me confier un accès ftp en privé, je pourrai regarder
no comments...
Ahahaa j'avais tellement peur que tu me répondes ça x) Pourtant "ton .htaccess n'est pas actif ou tu ne travailles pas sur le bon fichier" je trouvais ça très explicite sans que ça fasse sens pour moi. Mais c'est pas grave ça ne doit pas être important.
C'est très gentil de ta part de me proposer de mettre la main dans le cambouis. Je vais encore travailler un peu de mon côté et si vraiment je sens que je suis à court de ressources je ferai ça.
Mais à ce propos une idée viens de me venir, je me sens idiot de ne pas avoir essayé ça plus tôt. J'ai même peur qu'on me prenne pour un imbécile finit tiens. Mais il se trouve que la page chargée est l'index.php qui se trouve dans le dossier "1.COURWEB". Les cas de réécriture d'URL que j'avais vu portaient sur un fichier, et pas sur un dossier.
Est ce que ce ne serait pas le passage de "ianus.me/1.COURWEB" (qui jusque là serait toujours écrit avec le "/web") à ianus.me/1.COURWEB/index.php qui réécrirait l'url avec le nom du chemin ? Pour le coup ça expliquerait pourquoi l'histoire du '/' réglait mon problème hier...
Je vais donc faire une série de tests de ce côté là, en croisant les doigts, et en priant pour ne pas être rongé par la honte dans le cas où ça fonctionnerait.
Edit : ohlala j'ai honte....
> je trouvais ça très explicite
oui, mais faut être très pervers pour essayer de comprendre les éventuels défauts Ovh
je peux pas tout écrire
> l'index.php qui se trouve dans le dossier "1.COURWEB"
si tu as une redirection dedans, ça expliquerai (php header(); par exemple)
> pas sur un dossier.
pas d'importance, si dossier, c'est le index qui est lu
Ben apparemment ça en avait de l'importance. J'ai simplement eu à rajouter un petit "/index.php" dans ma RewriteRule pour obtenir le résultat que je cherchais… J'arrondis les angles de ma solution puis je publie une réponse définitive à mon problème ![]()
Ouf ! Merci énormément pour ta patience kyodev, punaise, heureusement que tu es là quand même

