Je voudrais faire une réécriture d'URL (Pourquoi? Voir cette question .) Afin qu'au lieu que les utilisateurs voient des adresses comme
labouseur.com/course-compilers.html
ils peuvent plutôt voir et utiliser simplement
labouseur.com/course-compilers
(Encore mieux, je devrais peut-être restructurer cela pour que ce soit des cours / compilateurs.)
J'utilise un service d'hébergement partagé basé sur Linux pour mon site Web, donc je n'ai pas le contrôle administratif du serveur, mais j'ai le contrôle sur .htaccess. Les références que j'ai lues en ligne me semblaient peu claires, je cherche donc ici un peu de clarté et de conseils.
Réponses:
Vous pouvez réellement supprimer .html des fichiers sur votre serveur et définir les paramètres dans htaccess afin qu'ils soient servis sous forme de fichiers html, mais ce n'est probablement pas ce que vous recherchez.
Faites ceci:
la source
Tout d'abord, assurez-vous qu'apache possède le module et qu'il est autorisé dans les fichiers .htacces, puis ajoutez:
Votre exemple nécessiterait
Pour une structure de répertoire à un niveau et
Pour une structure à plusieurs niveaux.
Mais attention
Si vous avez la structure
Les règles de réécriture dans les
.htaccess
fichiers enfants seront relatives à leur dossier parent et vous pouvez vous retrouver dans des situations de boucle de réécriture désordonnées . Assurez-vous que vous utilisezRewriteCond
pour les empêcher de se produire si vous le pouvez!la source
En plus des réponses ci-dessus, on peut utiliser
([\w-]+)
Permet les lettres, les chiffres avec un tiret (-).(.*)
réécrira chaque demande indépendamment, ce qui peut impuir les autres règles suivantes provoquant une erreur de serveur interne lors de l'accès.la source
RewriteRule
modèle est une amélioration par rapport à la réponse acceptée pour l'exemple spécifique donné dans la question, cependant, il ne correspondra pas au cas plus général lorsqu'il y a plus d'un segment de chemin, par exemple./path/to/course-compilers
. Incluez leL
drapeau pour réduire l'impact sur les règles suivantes. Bien que le(.*)
modèle soit inutilement général, il est peu probable qu'il cause de graves problèmes, en raison de la condition qui vérifie que le fichier existe.Vous n'avez pas besoin d'utiliser un fichier .htaccess pour accomplir cela. Structurez simplement vos fichiers en répertoires, et au lieu d'utiliser "labouseur.com/course-compilers.html", nommez simplement le fichier index.html et placez-le dans un répertoire appelé "course-compilers". Ensuite, lorsque vous pointez sur ce répertoire, l'index est servi par défaut mais ne sera pas affiché dans l'URL. Vous pouvez donc simplement écrire vos liens sous "labourseur.com/course-compilers" et tout ira bien.
Aucun .htaccess requis.
la source