2009-07-24 9 views
0

Mon fichier .htaccess actuelURI simple réécriture avec .htaccess

Options +FollowSymLinks 
RewriteEngine on 
RewriteCond %{HTTP_HOST} . 
RewriteCond %{HTTP_HOST} !^falsebase\.net 
RewriteRule (.*) http://falsebase.net/$1 [R=301,L] 

Je veux ajouter à ce donc je lorsqu'un utilisateur entre « http://u.falsebase.net/USERNAME » dans leur barre d'adresse ils se dirigeais à « http://falsebase.net/profile.php?name=USERNAME ». J'imagine que c'est assez simple, je n'ai tout simplement aucune expérience avec .htaccess, et après avoir analysé environ 12 autres threads qui semblaient similaires à cela, je n'ai pas reçu de réponse cohérente de l'un d'entre eux.

Répondre

0

Vous devez utiliser une règle de réécriture interne, pas une redirection externe. Vous ne voulez pas vraiment que vos utilisateurs voient une URL moche comme /profile.php?name=USERNAME.

Donc, essayez d'utiliser quelque chose comme

RewriteEngine On 
RewriteRule ^/(.+)$ /profile.php?name=$1 

où. + Est un modèle qui correspond au nom d'utilisateur.

Si vous connaissez vos noms d'utilisateur sont tous les caractères az ou AZ, par exemple, vous pouvez le serrer au-dessus en utilisant

RewriteEngine On 
RewriteRule ^/(a-zA-Z)$ /profile.php?name=$1 

Gardez à l'esprit que d'avoir la partie nom d'utilisateur de votre URL comme/nom d'utilisateur attrapera tous URL possibles. Vous voudrez peut-être de les mettre en un espace de noms spécifique, comme

http://www.example.com/user/<username> 

où est le nom d'utilisateur est entré, dans ce cas, vous devez utiliser

RewriteEngine On 
RewriteRule ^/user/(.+)$ /profile.php?name=$1 

etc.

+0

J'ai essayé, cela, mais il doesn ne semble pas fonctionner. J'essaye d'ajouter quelque chose à mon dossier actuel d'htaccess (montré ci-dessus), pas le remplacer par quelque chose. Je veux que le htaccess redirige tous les www.mydomain.net -> mydomain.net (il le fait déjà et fonctionne bien) et ajoute la réécriture interne afin que mydomain.net/u/USERNAME charge toujours la page mydomain.net/profile. php? name = USERNAME, tout en ayant toujours mydomain.net/u/USERNAME comme URL. – RyanMcG

+0

Ok, donc je sais que ça fait longtemps, mais j'ai trouvé que c'était mon service d'hébergement qui ne lisait pas mon fichier .htaccess. Merci de votre aide! – RyanMcG

0

Essayez ces règles:

RewriteCond %{HTTP_HOST} . 
RewriteCond %{HTTP_HOST} !^(u\.)?falsebase\.net 
RewriteRule (.*) http://falsebase.net/$1 [R=301,L] 

RewriteCond %{HTTP_HOST} !^(u\.)?falsebase\.net 
RewriteRule ^[^/]+$ http://falsebase.net/profile.php?name=$0 

Ou si une redirection interne est possible:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{HTTP_HOST} !^(u\.)?falsebase\.net 
RewriteRule ^[^/]+$ profile.php?name=$0 
Questions connexes