2010-10-09 7 views
0

RewriteRule ^user/(.*)/(.*) profile.php?user=$1&v=$2 [L] œuvres pour http://10.0.1.5/user/Kevin/wall/htaccess rewrite aide

. si je fais http://10.0.1.5/user/Kevin/ il 404 de si je fais http://10.0.1.5/user/Kevin il 404 de

Je fatigué

RewriteRule ^user/(.*) profile.php?user=$1 [L] 
    RewriteRule ^user/(.*) profile.php?user=$1 [L] 
    RewriteRule ^user/(.*)/(.*)/ profile.php?user=$1&v=$2 [L] 
    RewriteRule ^user/(.*)/(.*) profile.php?user=$1&v=$2 [L] 

Mais cela n'a pas fonctionné comme je voulais. Je veux que cela fonctionne avec les 4 URLs possibles. Que devrais-je faire?

Répondre

1

Utilisez un modèle plus précis que .* comme [^/]+ et utiliser /?$ pour faire la barre oblique de queue en option:

RewriteRule ^user/([^/]+)/?$ profile.php?user=$1 [L] 
RewriteRule ^user/([^/]+)/([^/]+)/?$ profile.php?user=$1&v=$2 [L] 

Mais comme je le recommande d'utiliser un seul des formats (avec ou sans slash), enlever ou ajoutez le slash de fin s'il est présent ou manquant:

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

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

Est-ce vraiment important si le site a un mélange des deux? – Keverw

+0

@Keverw: Non, vous pouvez utiliser les URL que vous voulez. Mais je voudrais juste utiliser un schéma cohérent. – Gumbo

+0

D'accord. Merci de votre aide! – Keverw