2017-09-14 2 views
-1

Je développe un peu plus mon système de connexion pour avoir l'air beaucoup plus professionnel, et je voulais savoir comment transformer les requêtes en liens simples pour qu'elles soient plus élégantes?GET demande sans avoir besoin du? à la fin

Par exemple, pour un de mes systèmes, un utilisateur peut rechercher le profil elses someones en allant http://www.example.com/user?user=JimmyJones

Cest bien beau, mais je ne pense pas qu'il a l'air très bon et beaucoup d'autres sites ne sont pas dans leurs liens en raison d'une sorte de truc que je ne connais pas, comme vous pouvez le voir, je me suis débarrassé du .php à la fin qui est fait en utilisant un htaccess très simple.

Mais comment puis-je changer ce lien ci-dessus pour:

http://www.example.com/user/JimmyJones

Merci beaucoup d'avoir pris le temps de lire et j'espère vraiment que quelqu'un peut me aider avec mon petit problème, je suppose il y a un moyen de le faire dans .htaccess?

EDIT:

Voici quelques sites qui le font à peu près comment je voudrais le faire:

imgur.com/user/example

facebook.com/exampleuser

+2

vous recherchez ** réécriture d'url **. Il est généralement effectué via un module apache, 'mod_rewrite'. https://httpd.apache.org/docs/current/en/mod/mod_rewrite.html – Calimero

+0

@Calimero Comment pourrais-je faire ce monsieur, je serais très reconnaissant si vous pouviez me donner quelques conseils de ce que je voudrais écrire à faire ce? – BigHoss

+1

Ou vous pourriez utiliser un routeur et le modèle de contrôleur frontal. – Progrock

Répondre

0

Dans .htaccess en supposant que le serveur web Apache avec le module de réécriture a permis, quelque chose comme ceci:

RewriteEngine On 
RewriteRule ^user/([a-zA-Z]+)$ user.php?user=$1 [L] 

La première ligne indique utiliser le moteur de réécriture. La seconde, dit correspondre à une URL qui commence (ou plutôt est relative au dossier contenant .htaccess) avec le modèle 'user' suivi d'une barre oblique et correspondant à un motif de caractères alphabétiques jusqu'à la fin de la chaîne (sans inclure de paramètres de requête supplémentaires).

Le drapeau L indique le travail effectué.

Si le .htaccess était à la racine publique:

//example.com/user/JimmieJones 

tracerait à:

//example.com/user.php?user=JimmieJones 

Cependant, il ne correspond pas à:

//example.com/user 
//example.com/user/ 
//example.com/user/JimmieJones/ 
//example.com/user/Freddy_K9 

Notez que les liens existants dans votre demande:

<a href="/user?user=JimmieJones">Visit Jimmie's Profile</a> 

Devrait probablement être mis à jour. Et avec le modèle d'exemple ci-dessus, les anciennes urls de style (précédemment indexées/mises en signet) pourraient échouer sans votre règle existante. Vous devrez peut-être adapter le modèle ou configurer des redirections pour l'ancien style.

La gestion de nombreuses redirections et réécritures peut devenir un casse-tête. Je conseille un peu d'attention à l'espacement de votre nom d'URL. Et les documenter.

Je réserve des modèles de premier niveau pour les alias/raccourcis/campagnes.Je voudrais éviter cela pour vos urls de profil utilisateur si possible.

Vous voudrez idéalement viser la cohérence et avoir une correspondance unique pour les URL (avec la méthode HTTP associée) et les ressources (URL canoniques).

+0

Pourriez-vous s'il vous plaît expliquer ce monsieur? Que signifie le [L] et le 1 $? – BigHoss

+0

Le manuel fait un meilleur travail que je pourrais. Ils sont appelés drapeaux. https://httpd.apache.org/docs/2.4/rewrite/flags.html – Progrock

0

vous faire fichier .htaccess dans le dictionnaire racine puis démarrez avec

RewriteEngine on 

puis d'écrire vos règles, Pour votre exemple, il serait comme ça

RewriteRule ^/?user/([^/]+)/?$ user?user=$1 [L,QSA] 

donc une pleine page serait comme ce

RewriteEngine on 
RewriteRule ^/?user/([^/]+)/?$ user.php?user=$1 

juste pour votre exemple.

+0

@Progrock Non, juste un exemple. – AXAI

+0

@Progrock En fait la seule chose dont je suis sûr, les barres obliques optionnelles. – AXAI