2009-10-08 6 views
2

Je suis en train de faire une ré-écriture douloureuse de plusieurs urls sur un site Web Je travaille actuellement, mais je l'ai remarqué un petit problème:.htaccess même URL avec ou sans/

RewriteRule ^domains/transfer$ ./cart.php?gid=11 [L,NC] 

Cette ligne avec navigate si je allez à:

http://my-site/domains/transfer 

Mais il ne fonctionne pas avec un arrière /:

http://my-site/domains/transfer/ 

Est-il possible que je peux changer la RewriteCode prendre eit son argument et aller à la même page. Il semble inutile d'avoir deux fois la même ligne pour inclure un '/'

Toute aide serait appréciée.

Vive

Répondre

3

Changer la ligne à ceci:

RewriteRule ^domains/transfer/?$ ./cart.php?gid=11 [L,NC] 

La magie est là: /? et qui permet au caractère précédent, dans ce cas, la barre oblique (/), pour être en option.

Si vous souhaitez que quelque chose se produise après le transfer, supprimez le signe dollar ($) qui marque la fin de la correspondance autorisée.

+0

Impressionnant. Fonctionne parfaitement. Merci beaucoup. – frodosghost

0

Je vous recommande de permettre simplement une forme d'URL, celle avec ou sans la barre oblique et rediriger si malformé:

# remove trailing slash 
RewriteRule (.*)/$ /$1 [L,R=301] 

# add trailing slash 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule .*[^/]$ /$0/ [L,R=301] 
+0

Y a-t-il une raison pour autoriser l'un mais pas l'autre? Est-ce un problème de programme, ou plus d'un problème de correction? – frodosghost

+0

@frodosghost: C'est un problème de correction. Chaque ressource doit avoir une seule URL valide. – Gumbo

+0

@Gumbo :: Merci. Doit mettre en œuvre. – frodosghost

Questions connexes