2010-05-27 6 views
2

Je travaille sur un RewriteRule afin d'avoir des URL comme ceux-ci: http://www.myhost.com/var1/var2/fin rewriterule slash

RewriteRule ^(.*)\/(.*)\/$ index.php?var1=$1&var2=$2 [L] 

Ce que je voudrais ajouter est que lorsque quelqu'un tape myhost.com/var1/var2 (sans barre oblique), il va toujours à la même page.

Existe-t-il une meilleure façon de le faire?

RewriteRule ^(.*)\/(.*)\/$ index.php?var1=$1&var2=$2 [L] 
RewriteRule ^(.*)\/(.*)$ index.php?var1=$1&var2=$2 [L] 

Répondre

0
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^\/]*)\/([^\/]*)\/?$ index.php?band=$1&song=$2 [L] 

Notez la désinence ?

+0

Cela fonctionne, mais il a cassé l'accès à mes fichiers CSS (qui sont en myhost.com/folder1/folder2/). Une idée pourquoi? –

+0

Ouais, parce que ceci correspond à n'importe quel accès à deux dossiers et le passe à index.php à la place. Vous devriez ajouter 'RewriteCond% {REQUEST_FILENAME}! -f' et' RewriteCond% {REQUEST_FILENAME}! -d' dans deux lignes différentes juste avant la RewriteRule, ainsi les fichiers existants ne seront pas affectés par cette règle. – Seb

+0

Merci c'est ce que je cherchais. Mais maintenant, si je tape myhost.com/var1/var2, ça va, mais si j'essaye myhost.com/var1/var/ il est reconnu comme myhost.com/var1var2. Voici mon code: RewriteCond% {REQUEST_FILENAME} -f RewriteCond% {REQUEST_FILENAME} -d RewriteRule^(*). \/(*). \/$ Index.php var1 = 1 & var2 $!? = $ 2 [L] –