Pretty URLs avec .htaccess
J'ai une URL http://localhost/index.php?user=1
. Quand j'ajoute ce .htaccess
fichier
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^user/(.*)$ ./index.php?user=$1
J'seront désormais autorisés à utiliser http://localhost/user/1
lien. Mais que diriez - http://localhost/index.php?user=1&action=update
comment puis-je faire http://localhost/user/1/update
?
Aussi comment puis-je faire cette url http://localhost/user/add
?
Merci. Désolé, je suis relativement nouveau à .htaccess
.
Les basiques, 24ways.org/2013/url-rewriting-for-the-fearful
Sont tous vos utilisateurs identifiés par des lettres ou des chiffres? Ou les deux? E. g.
seulement des nombres
Sont tous vos utilisateurs identifiés par des lettres ou des chiffres? Ou les deux? E. g.
/user/1
, /user/BigChris
, /user/BigChris1
?seulement des nombres
OriginalL'auteur Port 8080 | 2014-08-01
Vous devez vous connecter pour publier un commentaire.
vous pouvez écrire quelque chose comme ceci:
OriginalL'auteur denoise
Si vous souhaitez activer
http://www.yourwebsite.com/index.php?user=1&action=update
en
http://www.yourwebsite.com/user/1/update
Vous pouvez utiliser
Pour voir les paramètres en PHP:
avec $1, $2, etc.
obtenir tous les numéros (1, 34, etc.).
(a, abc, mise à jour, etc.).
C'est, à mon avis, un peu plus propre et plus sécurisé que (.*) ce qui en gros veut presque rien dire est accepté.
localhost/index.php?user&action=add
. Comment puis-je fairelocalhost/user/add
?OriginalL'auteur mogosselin
Depuis que vous avez marqués ce avec PHP, je vais ajouter un peu de perspective à partir de ce que j'ai fait, et il peut ou ne peut pas vous aider.
Vous pouvez, bien sûr, écrire uniquement dans .htaccess, la prudence lors de la commande. Par exemple, disons que vous avez:
Ensuite, il doit, sur réception de
http://localhost/user/1/update
aller à
http://localhost/index.php?user=$1&action=update
et pas
http://localhost/index.php?user=$1
Maintenant, ce que j'ai fait, c'est plutôt de pousser tout à
index.php?q=$1
Ensuite, j'ai utilisé index.php pour gérer la façon dont la requête a été brisé. Donc, disons que quelqu'un entre dans
http://www.example.com/user/18239810/update
ce serait aller à
http://www.example.com/index.php?q=user/18239810/update
À partir de là, exploser la chaîne de requête, le long de la première
/
pour donneruser
et18239810/update
.Ce serait me dire que j'ai besoin de passer
18239810/update
à lauser
contrôleur. Dans ce contrôleur, j'ai de nouveau exploser l'argument dans l'id d'utilisateur et de commande, et je peux passer sur la commande à dire comment faire pour charger la page, en passant l'id de l'utilisateur comme un argument de laupdate
fonction.Très rapide et sale exemple (index.php):
Bien sûr, cela signifie que les constructeurs doivent tous prendre un argument de type chaîne qui sera analysé pour les valeurs acceptables. Vous pouvez faire cela avec explose, et les instructions de commutation, toujours en défaut de retour à la norme en première page afin d'empêcher les accès sur la base d'une estimation aléatoire.
OriginalL'auteur stslavik
Merci pour l'idée @denoise et @mogosselin. Aussi avec @stslavik pour souligner quelques-unes des inconvénient de mon exemple de code.
Voici comment je le fais:
en utilisant
var_dump($_GET);
sur le lienlocalhost/user/1234/update
j'ai eutout
localhost/user/add
qui est mon objectif. Je vais seulement faire autres choses sous le capot avec PHP.
OriginalL'auteur Port 8080
Pour
/user/add
vous aurez besoin de faire une règle distincte parce que vous n'avez pas de "milieu de paramètre". Donc:Vous pouvez alors faire de nouvelles règles pour les Url qui contiennent des paramètres supplémentaires:
Ce qui vous permettra d'effectuer des actions sur les utilisateurs existants. E. g.
/user/1/update
il ne fonctionne pas
Ahhh merde! J'ai complètement oublié les crochets!
OriginalL'auteur Kinnectus
un moyen simple est de passer seulement une variabe à index.php comme ce
et dans votre index.php fichier vous faire
celui-ci fonctionne pour tous les cas, lorsque vous essayez de passer de nombreuses variables, il ne fonctionne pas dans la wase quand vous faites quelque chose comme
la dernière variable qui prend toujours la valeur
add/12/54/54/66
expload
a une belle bague à elle.OriginalL'auteur Khalid
Ses simple il suffit de l'essayer !
C'est tout !!
OriginalL'auteur Gavin
Essayer ça, c'est très simple:
OriginalL'auteur Hemal Halari