Bonjour,
Je cherche à faire une redirection d'URL en htaccess, afin de renvoyer vers un dossier qui contient le fichier.
Je m'explique : je n'ai pas envie d'avoir l'adresse https://monsite.fr/dossier/fichier.php, mais plutôt l'adresse https://monsite.fr/fichier.php.
Pour pouvoir faire ça, je compte donc passer par le htaccess, et rediriger ces adresses vers le dossier.
mon code actuel ne fonctionne, mais supprime toute mise en page CSS :
Avec ce code, ça fonctionne. Index, fichier1 et fichier2 ne sont pas réécrits, et n'importe quel autre l'est. La mise en page fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 ## Rediriger les liens vers le dossier ## Rediriger les liens vers le dossier si ce n'est aucun des fichier suivant. RewriteCond "%{THE_REQUEST}" "!^GET.*index\.php" [NC] RewriteCond "%{THE_REQUEST}" "!^GET.*fichier1\.php" [NC] RewriteCond "%{THE_REQUEST}" "!^GET.*fichier2\.php" [NC] RewriteCond "%{THE_REQUEST}" "!^GET.*/d/*" [NC] // pour éviter le bouclage RewriteCond "%{THE_REQUEST}" "!^GET.*/css/*" [NC] // sans ça, il n\'y avait plus aucune mise en page RewriteCond "%{THE_REQUEST}" "!^GET.*/captcha/*" [NC] // sans ça, le captcha ne s\'affichait plus. RewriteRule "^(.+)" "/d/$1" [R=301,L,NE]
Par contre, gros soucis, si les redirections marchent le site ne marche plus.
Les erreurs et réussites qui sont passées en GET dans l'URL (par exemple https://monsite.fr/index?echec=404) sont comme perdues en route. Pourtant, comme je dis que s'il y a index dans THE_REQUEST, on ne doit pas réécrire, pourquoi les données sont-elles perdues ?
Surtout que plus haut dans mon .htaccess, j'avais de longue date inscrit une autre réécriture, pour enlever le index.php et ne garder que les messages d'erreur visibles (oui, une pure question esthétique... ^^) Voici le code :
Lui a toujours marché : index.php n'était plus visible, mais les messages d'erreurs si, et donc le site fonctionnait.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ## enlever le index.php RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC] RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]
j'ai essayé de le désactiver pour voir si il interferait avec le nouveau code, mais ça ne change rien.
Et de manière plus générale, les données envoyées en POST par un formulaire ne semblent plus être envoyées (le captcha faut était censé renvoyer une erreur, je n'en ai plus, et même quand tout est juste, et donc que je devrais ne pas avoir d'erreur mais un message positif, il ne se passe rien). La page est juste rechargée vierge.
Comment puis-je garder/récupérer mes erreurs et mes infos ?
Partager