J'ai un modèle php qui a un index.php
et toutes les pages différentes (content1.html
, content2.html
, etc.) sont affichées sur la page index.php
. Donc, par exemple, je peux ouvrir www.example.com/index.php?content1
et il affichera le content1.html
.
Maintenant, ce que je voudrais, c'est ceci: vous voyez souvent des sites Web dont l’URL est la suivante: www.example.com/this-is-the-content
. Je sais comment faire cela avec un point d'exclamation comme www.example.com/?content1
où vous n'écrivez pas simplement le index.php
.
Mais comment puis-je créer un nom d'URL, qui est complètement différent du nom de fichier? Par exemple, www.example.com/this-is-some-page
me montrerait le contenu de index.php? Content1
Vous devriez probablement regarder dans mod_rewrite
qui pourrait vous aider.
.htaccess est certainement un itinéraire que vous pouvez utiliser pour réécrire les URL. Mais, je pense que l'élément qui vous manque est la partie où vous devez stocker le contenu de votre page dans une base de données ou stocker les noms de fichiers et les slugs d'URL des pages dans un tableau sur index.php à extraire. De cette façon, vous pouvez avoir un slug d'URL différent du nom de fichier réel.
Par exemple, si vous utilisez une règle de réécriture dans .htaccess qui indique que toutes les requêtes pour l'URL http://www.example.com/the-page-you-want
doivent afficher le contenu de content1.html, vous devez spécifier quelque part que "the-page-you-wanna" fait référence à content1.html.
voir la réponse de @ Pål Brattberg pour une description détaillée.
@phpheini Vous n'avez pas besoin de lier le fichier .htaccess à la base de données, supposez si vous voulez l'URL de votre article comme
http://example.com/sports/45/world-cup-2011.html
RewriteEngine On
RewriteBase /
RewriteRule ^([a-z]+)/([0-9]+)/(.*?).html$ /index.php?type=$1&article_id=$2
Ici $ 1 et $ 2 obtiennent le type d'article et article_id qui peuvent changer. index.php peut afficher du contenu en fonction des paramètres.