help pour les regex de mon .htaccess

help pour les regex de mon .htaccess - PHP - Programmation

Marsh Posté le 05-09-2009 à 00:44:48    

Bonjour à tous,
Je galère depuis déjà quelques heures sur ce problème:
 
Mon site est composé d'URL du genre: video.php?post=26
Je souhaite obtenir des URL rewritées du genre : video-super-titre-titre-titre-post-26.htm
 
Le préfixe des URL rewritées sera toujours du type video-super- et le suffixe -post-26.htm, mais là ou ça se complique, c'est que le nombre de mots du titre-titre-titre- est variable :
 
Je peux avoir des URL rewritées du type : video-super-titre-titre-post-26.htm
Oubien du type : video-super-titre-titre-titre-titre-titre-titre-titre-titre-titre-titre-titre-titre-post-26.htm
 
Actuellement le code de mon .htaccess ne fonctionne pas :
 

Code :
  1. ErrorDocument 404 /error/404.php
  2. RewriteEngine On
  3. RewriteRule ^video-super-(.*)-post-([^-]*)\.htm$ /video.php?post=$1 [L]


 
Quelqu'un peut-il me donner un coup de main?
Merci d'avance!

Reply

Marsh Posté le 05-09-2009 à 00:44:48   

Reply

Marsh Posté le 05-09-2009 à 08:39:12    

C'est un problème interessant également, qui m'interesse pour lequel je me suis jamais posé la question.  
 
Une idée, je ne sais pas s'il elle fonctionnera, mais écrire dynamiquement dans le fichier .htaccess depuis le serveur n'est pas possible ? A savoir rajouter ta ligne de façon automatique !
 
++

Reply

Marsh Posté le 05-09-2009 à 14:22:49    

Est-ce que ceci fonctionne ?  
RewriteRule ^/video-super-(.*?)-post-([0-9]+)\.htm$ /video.php?post=$1 [L]


Message édité par guybrush02 le 05-09-2009 à 14:26:07

---------------
Guybrush  
Reply

Marsh Posté le 05-09-2009 à 15:55:29    

Merci pour vos réponses,  
le code que tu m'as envoyé guybrush02 retourne une erreur 500.
 
Le code suivant fonctionne parfaitement avec des url du type : video-super-post-26.htm  

Code :
  1. ErrorDocument 404 /error/404.php
  2. RewriteEngine On
  3. RewriteRule ^video-super-post-([^-]*)\.htm$ /video.php?post=$1 [L]


 
Maintenant j'aimerais ajouter une règle qui dit "peu importe ce qu'il y a entre "video-super- et -post-26.htm genre :

Code :
  1. ErrorDocument 404 /error/404.php
  2. RewriteEngine On
  3. RewriteRule ^video-super-NIMPORTEQUOI-post-([^-]*)\.htm$ /video.php?post=$1 [L]


 
Voila j'espère que ça vous paraitra clair!  :pt1cable:


Message édité par jackichan le 05-09-2009 à 16:06:45
Reply

Marsh Posté le 07-09-2009 à 18:25:14    

up, des idées quelqun?

Reply

Marsh Posté le 07-09-2009 à 20:17:44    

t'as le allowoveride d'activé ?

Reply

Marsh Posté le 09-09-2009 à 21:41:22    

stealth35 a écrit :

t'as le allowoveride d'activé ?


 
Oui!
 
Bon j'ai trouvé une solution alors je vous la donne.
J'utilise le code suivant :

Code :
  1. RewriteEngine on
  2. RewriteRule (.*)(-.+)-([^-]+)-([^-&]*)([^-]*)\.htm $1$2&$3=$4$5\.htm [N]
  3. RewriteRule (.*)-([^-]+)-([^-]*)(.*)\.htm /$1.php?$2=$3$4 [L]
  4. RewriteRule ^(.*).htm /$1.php [L]


 
Çà fonctionne nickel!

Reply

Marsh Posté le 09-09-2009 à 22:09:10    

d'ailleur j'ai un truc simpa pour les regexp ca peu toujours servir
 
http://gskinner.com/RegExr/

Reply

Marsh Posté le 10-09-2009 à 10:34:56    

jackichan a écrit :

Code :
  1. RewriteEngine on
  2. RewriteRule (.*)(-.+)-([^-]+)-([^-&]*)([^-]*)\.htm $1$2&$3=$4$5\.htm [N]
  3. RewriteRule (.*)-([^-]+)-([^-]*)(.*)\.htm /$1.php?$2=$3$4 [L]
  4. RewriteRule ^(.*).htm /$1.php [L]


pas super propre... mais bon si ça marche.
 
PS@guybrush : content de te voir ici :)

Reply

Marsh Posté le 10-09-2009 à 15:49:35    

ITT : massive fail.

 

Essaye avec ça :

Code :
  1. RewriteEngine On
  2. RewriteRule ^video-super-(.+?)-post-(\d+).htm$ video.php?post=$2

Message cité 1 fois
Message édité par FlorentG le 10-09-2009 à 15:51:05
Reply

Marsh Posté le 10-09-2009 à 15:49:35   

Reply

Marsh Posté le 11-09-2009 à 20:11:51    

FlorentG a écrit :

ITT : massive fail.
 
Essaye avec ça :

Code :
  1. RewriteEngine On
  2. RewriteRule ^video-super-(.+?)-post-(\d+).htm$ video.php?post=$2



 
 
Merci Florent, mais ça me donne une erreur 500.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed