D'abord, souvenez-vous de mettre cette ligne dans votre .htaccess
avant tout réécritures:
RewriteEngine on
Si vous voulez site.com/something
pour afficher site.com/something.php
si elle existe sans changer l'URL, faites ceci:
RewriteCond %{REQUEST_URI}.php -f
RewriteRule .* %{REQUEST_URI}.php
Cela affichera un [fichier demandé] .php s'il existe tout en affichant la même URL que vous avez entrée. Si le fichier php n'existe pas, il vous donnera toujours un 404 comme il se doit. (C'est ce que le -f
est pour.)
Il n'existe aucun moyen de masquer complètement les requêtes GET. Vous pouvez vous débarrasser des requêtes GET, mais elles ne seront plus disponibles pour votre script et cela ne sert à rien. Vous pouvez, cependant, le rendre plus agréable. Par exemple, si vous voulez site.com/userpage/item/30
pour afficher le contenu de site.com/userpage.php?item=30
, vous pouvez faire quelque chose comme ceci:
RewriteRule ^/userpage/item/(.*)$ userpage.php?item=$1
Vous pouvez aussi le faire fonctionner avec une valeur GET avec une règle comme ceci:
RewriteRule ^/userpage/(.*)/(.*)$ userpage.php?$1=$2
Avec cela en effet, vous pouvez accéder à site.com/userpage.php?query=yes
avec site.com/userpage/query/yes
à la place. C'est à peu près le meilleur que vous pouvez faire; Les valeurs GET doivent provenir de l'URL en quelque sorte, donc si vous voulez que vos entrées soient complètement cachées, vous devrez utiliser POST à la place.