Aller au contenu

Exception sur un répertoire


Sujets conseillés

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...

Lien vers le commentaire
Partager sur d’autres sites

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.

 

 

Lien vers le commentaire
Partager sur d’autres sites

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 ?

Lien vers le commentaire
Partager sur d’autres sites

:lol:  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.

 

Lien vers le commentaire
Partager sur d’autres sites

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é par sandrinoo
Lien vers le commentaire
Partager sur d’autres sites

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

 

Lien vers le commentaire
Partager sur d’autres sites

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é par sandrinoo
Lien vers le commentaire
Partager sur d’autres sites

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)

 

 

 

Lien vers le commentaire
Partager sur d’autres sites

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 ?

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

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



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