Rewriting ?param=test_test2 > /test/test2

WRInaute occasionnel
Bonjour,

J'aurai besoin de rewriter cette url :

-http://www.example.com/index.php?modules=test_test2 en -http://www.example.com/test/test2

J'ai utilisé cette règle :

Code:
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/$ index.php?modules=$1_$2 [L]

Mais elle ne marche malheureusement pas. Je me demande donc si c'est tout simplement possible de scinder en 2 un paramètre GET ?

Merci d'avance, cordialement.
 
WRInaute accro
Ca veut dire quoi "elle ne marche malheureusement pas" ?
essaie d'ajouter un R dans les options, donc [R,L] comme cela tu verras la redirection qui est effectuée.
Quand c'est ok, tu supprime le R,
 
WRInaute occasionnel
Le problème c'est que ca ne rentre pas dans mon if, voici le code dans mon index :

Code:
if (isset($_GET['modules'])) {
	$filename = "modules/" . $_GET['modules'] . ".php";
	if (file_exists($filename)) {
		require_once($filename);
	}
	else {
		echo "erreur";
	}
}

Donc en clair, suivant la valeur passé pour la variable get modules, ça inclu la page si elle est trouvé, sinon, ca met une erreur.

Pour -http://www.example.com/test/test2/ ca affiche erreur et pour -http://www.example.com/index.php?modules=test_test2 ca m'affiche bien la page.
 
WRInaute passionné
j'ai déjà vu un problème avec l'option multiview quand le répertoire virtuel à le même nom qu'un script sans l'extension.
Si tu as un script -http://www.example.com/test.php essaye d'ajouter :
Code:
Options -MultiViews
 
WRInaute occasionnel
Avec R,L pareil, ca affiche "Erreur".

J'ai pas de script du même nom à la racine mais j'ai testé quand même Options -MultiViews. Toujours pareil : Erreur.
 
WRInaute occasionnel
Oui, d'ailleurs pour parer à ce problème. Il suffit d'inverser la règle de rewriting ou il y a un autre moyen ?

Merci pour votre aide.
 
WRInaute passionné
essaye de mettre le flag R à la place de L. Si tu n'es pas redirigé en appelant -http://www.example.com/test/test2/ c'est la partie gauche qui contient une erreur, sinon c'est la partie droite de la règle.
Code:
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/$ /index.php?modules=$1_$2 [R]
 
WRInaute occasionnel
Je viens de trouver l'erreur. Le soucis est que j'ai 2 règles :

Code:
# modules avec id :
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/$ index.php?modules=$1&id=$2 [L]

# modules sans id
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/$ index.php?modules=$1_$2 [L]

En commentant la première, la deuxième marche. Y'a-t-il un moyen de faire cohabiter les deux ? Je pensais que [L] suffisait mais apparement non.

Merci d'avance
 
Discussions similaires
Haut