sandrinoo Posté 16 Novembre 2021 Posté 16 Novembre 2021 Bonjour à tou.te.s, J'ai dans mon htaccess un rewriting d'url comme ceci qui génère une url avec un slash de fin : RewriteRule ^(.*)/$ /categorie.php?cat=$1 [L] J'ai par ailleurs un autre fichier news.php dont je voudrais également que l'url soit aussi avec un slash de fin "/news/" Mais bien sur ma réécriture d'url m'en empèche donc j'ai testé 3 essais d'exceptions mais sans succès : RewriteRule ^/news/ - [L] RewriteCond %{REQUEST_FILENAME} !^news/ RewriteCond %{REQUEST_URI} !^/news/ Je m'y prends mal, quel est le souci ? (je suis en mutu chez OVH). Merci d'avance si quelqu'un voit...
Dan Posté 17 Novembre 2021 Posté 17 Novembre 2021 Il y a 20 heures, sandrinoo a dit : J'ai dans mon htaccess un rewriting d'url comme ceci qui génère une url avec un slash de fin : RewriteRule ^(.*)/$ /categorie.php?cat=$1 [L] Je ne suis pas certain de comprendre, car ta réécriture ne génère pas une URL avec un / final, mais fait l'inverse: elle traite une URL avec un / final et lance categorie.php avec le nom en paramètre.
sandrinoo Posté 17 Novembre 2021 Auteur Posté 17 Novembre 2021 Bonjour Dan et merci, Alors là je ne comprends plus rien car chez moi ça fonctionne en générant dans mon navigateur, une url propre avec un slash final de type classique : www.nd.com/nom_de_cat/ Comment tu écrirais ça toi ?
Dan Posté 17 Novembre 2021 Posté 17 Novembre 2021 Cela ne génère pas une URL dans ton navigateur... C'est toi ou tes visiteurs qui entrent cette URL avec un / final, et ton .htaccess qui la convertit pour afficher la catégorie.
sandrinoo Posté 18 Novembre 2021 Auteur Posté 18 Novembre 2021 (modifié) Oui je me suis mal exprimée : c'est exactement ce que tu dis. 1/ Alors mon code est correct pour faire cela ? 2/ et comment faire une exception sur /news/ (sachant que la base de /news/ est news.php )? Modifié 18 Novembre 2021 par sandrinoo
Dan Posté 18 Novembre 2021 Posté 18 Novembre 2021 En ajoutant une règle pour news au dessus de ta règle précédente, comme ceci par exemple: RewriteRule ^news/$ /news.php [L] Il faut qu'elle soit avant pour que /news/ ne soit pas capté par ta règle appelant categorie.php
sandrinoo Posté 18 Novembre 2021 Auteur Posté 18 Novembre 2021 (modifié) Oui ça c'est la première chose que j'avais faite faite au départ. J'ai quand même retesté maintenant comme tu me dis avec "RewriteRule ^news/$ /news.php [L]" AVANT "RewriteRule ^(.*)/$ /categorie.php?cat=$1 [L]" mais sans succès : - la page /news/ affiche en fait /categorie.php?cat=news Par contre si Je place un # devant "RewriteRule ^(.*)/$ /categorie.php?cat=$1 [L]" là ok ça marche pour /news/ (mais plus pour les catégories bien sûr). Bizarre non ?? Modifié 18 Novembre 2021 par sandrinoo
Dan Posté 18 Novembre 2021 Posté 18 Novembre 2021 Si elle est en première position, le flag [L] (pour LAST) doit normalement empêcher les autres règles de s'exécuter. Cela ressemble fort à un bug ! As-tu autre-chose au début de ton .htaccess ? As-tu par hasard édité ton fichier .htaccess sur un PC ? Il peut avoir des caractères ^M (fin de ligne microsoft)
sandrinoo Posté 18 Novembre 2021 Auteur Posté 18 Novembre 2021 Oui, au début de mon htaccess j'ai ça : ErrorDocument 404 '404 htaccess' Options +FollowSymlinks RewriteEngine on RewriteCond %{HTTPS} off [OR] RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC] RewriteRule ^.*$ https://www.%1%{REQUEST_URI} [L,NE,R=301] Et oui je suis passée de PC (ou j'ai créé le htaccess) à MAC il y a 1 an ?
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant