2010-11-10 3 views
0

Je les règles de réécriture suivantes:problème regex avec singe hélicon sur Windows Server 2008

RewriteRule ^([a-zA-Z0-9]*)/([a-zA-Z0-9]*)\\.php\?(.*) /$2.php?shop=$1&$3 [NC,L] 
RewriteRule ^([a-zA-Z0-9]*)/([a-zA-Z0-9]*)\\.php  /$2.php?shop=$1 [NC,L] 
RewriteRule ^([a-zA-Z0-9]*)/$ /index.php?shop=$1 [L,NC] 
RewriteRule ^([a-zA-Z0-9]*)$ /index.php?shop=$1 [L,NC] 

dont le résultat devrait rediriger les éléments suivants:

www.site.com/Sells 
    -> /index.php?shop=Sells [works] 

www.site.com/Sells/menu.php?Cat=1 
    -> /menu.php?shop=Sells&Cat=1 [failing] 
    -> /menu.php?shop=Sells [which is 'wrong'] 

Le dernier exemple devrait obtenir correspondu par réécriture [1] ...

J'ai testé les règles avec le testeur regex livré wi le singe et a constaté que s'échapper ? et . ne semblent pas fonctionner. Je suis un peu déconcerté et apprécierait quiconque qui pourrait faire la lumière sur pourquoi cette fuite ne fonctionne pas.

Merci d'avance.

Répondre

0

Le drapeau QSA était manquant! il ajoute la chaîne de requête et j'ai oublié de le mettre en !!!

Les doubles barres obliques que j'ai ajoutées comme aperçu ne montraient pas les simples!

1
RewriteRule ^([a-zA-Z0-9]*)/([a-zA-Z0-9]*)\\.php\?(.*) /$2.php?shop=$1&$3 [NC,L] 
RewriteRule ^([a-zA-Z0-9]*)/([a-zA-Z0-9]*)\\.php  /$2.php?shop=$1 [NC,L] 

Trop échapper. Remplacez \\.php par \.php.

0

Vous semblez échapper au \ qui est destiné à échapper à la. (vous avez \ .qui est lu comme \ et n'importe quelle lettre/symbole)

Questions connexes