64 votes

Comment supprimer l'extension de fichier d'une adresse de site web ?

Je suis en train de concevoir un site web. Je veux que l'adresse de mon site Web ressemble à l'image suivante :

File name extensions like (PHP/JSP) are hidden

Je ne veux pas que mon site web ressemble à http://something.com/profile.php . Je veux que le .php à supprimer dans la barre d'adresse lorsque quelqu'un ouvre mon site web. En d'autres termes, je veux que mon site Web soit comme : http://something.com/profile

Comme deuxième exemple, vous pouvez regarder l'adresse du site Web de Stack Overflow lui-même.

Comment puis-je le faire ?

10 votes

C'est ce qu'on appelle Jolies URLs et il y a déjà une tonne de questions à ce sujet .

0 votes

Duplication possible de Jolies URLs dans les cadres PHP

2 votes

Ce n'est pas un doublon - il s'agit de frameworks/routage de requêtes vers un point d'entrée, ce qui n'est pas le cas ici.

90voto

Igor Points 723

Il suffit d'ajouter un fichier .htaccess dans le dossier racine de votre site (par exemple, /home/domains/domain.com/htdocs/) avec le contenu suivant :

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

Pour en savoir plus sur ce fonctionnement, consultez ces pages : Guide du mod_rewrite (introduction, utilisation), documents de référence

41 votes

+1 c'est la façon de faire, mais pourriez-vous expliquer ce qui se passe ici au cas où OP veut comprendre ces lignes

0 votes

Où puis-je lire la syntaxe pour comprendre exactement ce qui se passe ici ? ça ressemble un peu à du regex, mais je ne suis pas sûr ?! y a-t-il de bonnes ressources ?

0 votes

Pour en savoir plus sur ce fonctionnement, consultez ces pages : - Guide du mod_rewrite (introduction, utilisation) < httpd.apache.org/docs/2.4/rewrite > - documentation de référence < httpd.apache.org/docs/2.4/mod/mod_rewrite.html > Quelqu'un devrait ajouter cette information à cette réponse (j'ai essayé).

15voto

srapsware Points 31

Tout d'abord, vérifiez que le module mod_rewrite est installé. Ensuite, faites attention à bien comprendre comment il fonctionne, beaucoup de gens le prennent à l'envers.

On ne cache pas les urls ou les extensions. Ce que vous faites, c'est créer une NOUVELLE url qui dirige vers l'ancienne, par exemple

L'URL à mettre sur votre site web sera yoursite.com/play?m=asdf

ou mieux encore

yoursite.com/asdf

Même si le répertoire asdf n'existe pas. Ensuite, avec mod_rewrite installé, vous mettez ceci dans .htaccess. En gros, cela dit : si l'URL demandée n'est PAS un fichier et n'est PAS un répertoire, dirigez-la vers mon script :

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /play.php [L] 

C'est presque terminé - il ne vous reste plus qu'à écrire des choses dans votre script PHP pour analyser la nouvelle URL. Vous devez faire en sorte que les ANCIENNES URL fonctionnent aussi - ce que vous faites, c'est maintenir un système dans lequel la variable est toujours exactement la même O créer une table de base de données qui met en corrélation l'"URL favorable au référencement" avec l'identifiant du produit. Un exemple pourrait être

/Some-Cool-Video (qui correspond à l'ID du produit asdf)

L'avantage de cela ? Les moteurs de recherche vont indexer les mots-clés "Une vidéo sympa". asdf ? Qui va chercher ça ?

Je ne peux pas vous donner de détails sur la façon de programmer ceci, mais prenez la chaîne de requête, enlevez la fin

yoursite.com/Some-Cool-Video 

se transforme en "asdf"

Ensuite, définissez la variable m comme suit

m=asdf

Ainsi, les deux URL mèneront toujours au même produit.

yoursite.com/play.php?m=asdf 
yoursite.com/Some-Cool-Video 

mod_rewrite peut faire beaucoup d'autres choses importantes aussi, cherchez-le sur Google et faites-le activer sur votre serveur (il est probablement déjà installé).

5voto

Iman Hejazi Points 139

Vous avez des choix différents. L'une d'entre elles est de créer un dossier nommé "profil" et de renommer votre "profile.php" en "default.php" et de le placer dans le dossier "profil". et vous pouvez donner des ordres à cette page de cette façon :

Ancienne page : http://something.com/profile.php?id=a&abc=1

Nouvelle page : http://something.com/profile/?id=a&abc=1

Si vous n'êtes pas satisfait, laissez un commentaire pour des méthodes compliquées.

0 votes

Existe-t-il un moyen d'enlever le ?id=a&abc=1 de l'url ?

2voto

Rahul Singh Points 11

Le problème de créer un répertoire et d'y garder index.php est que

  1. vos liens avec le menu cesseront de fonctionner
  2. Il y aura beaucoup trop de répertoires. Par exemple, il y aura un répertoire distinct pour chaque question posée ici sur stackoverflow.

Les solutions sont 1. REWRITE du MOD (comme suggéré ci-dessus) 2. utiliser un code php pour inclure dynamiquement d'autres fichiers dans le fichier d'index. Lisez un peu plus à ce sujet ici http://inobscuro.com/tutorials/read/16/

2voto

Dan Horvat Points 526

En fait, la façon la plus simple de manipuler ceci est de

  1. Ouvrez un nouveau dossier sur votre serveur, par exemple "Data".
  2. Mettez-y index.php (ou index.html)

L'URL www.yoursite.com/data lira alors ce fichier index.php. Si vous voulez aller plus loin, ouvrez un sous-dossier (par exemple "Liste"), mettez un autre index.php dans ce dossier et vous pouvez demander à www.yoursite.com/data/list d'exécuter ce fichier PHP.

De cette façon, vous pouvez avoir un contrôle total sur ce point, très utile pour le référencement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X