[.htaccess] Comportement curieux d'un rewrite

WRInaute passionné
Bonjour,

Je deviens fou sur un test tout simple.

Mon .htaccess est placé dans /dossier/ qui existe donc réellement.

Code:
Sur une requête du type : http://www.example.com/dossier/nom-de-la-page.php

// Test 1
RewriteRule (.*) index.php?rewrite=$1 [L]
// rewrite = index.php

// Test 2
RewriteRule (.*) x.php?rewrite=$1 [L]
// rewrite = x.php
Pourquoi j'obtiens toujours le nom du script et nom celui de la page dans l'url ?


Je veux faire une règle tout simple...

Si http://www.example.com/dossier/nom-de-la-page.php
Alors rewrite /dossier/script.php?rewrite=nom-de-la-page

Si http://www.example.com/dossier/
Alors rien, (donc /dossier/index.php)

Merci.
 
WRInaute occasionnel
Peut-être que ça ne changera rien mais j'aurais vu une règle comme ça :
Code:
RewriteRule (.*)\.php /dossier/index.php?rewrite=$1 [L]
Ou
Code:
RewriteRule /(.*)\.php /dossier/index.php?rewrite=$1 [L]
 
WRInaute passionné
J'ai essayé ce genre de variante, sans succès.

Pourtant je connais l'url rewriting ! J'en deviens fou.

Les seules différences, je travaille sur un port spécifique :1000 et je suis dans un sous-répertoire.
 
WRInaute passionné
Pourquoi http://www.example.com/dossier/

Rentre dans cette règle puisque j'exige au moins un caractère avec + ?

Code:
// .htaccess à la racine pour tester
RewriteRule ^dossier/(.+)\.php$ /index.php?var=$1 [L]
Code:
var_dump($var)
//string(9) "index.php"

SI je comprends bien il prend le DirectoryIndex mais pourquoi ?


Curieux parce qu'avec .* au lieu de .+ il ne renvoie plus index.php ?

Code:
// .htaccess à la racine pour tester
RewriteRule ^dossier/(.*)\.php$ /index.php?var=$1 [L]
Code:
var_dump($var)
//string(0) ""
 
Discussions similaires
Haut