Je voulais juste faire une chose simple avec mod_rewrite. J'ai un site qui utilise des fichiers .php, et je voulais réécrire ceux-ci à des URL plus propres, et supprimer le .php. Ainsi, les fichiers seraient www.mysite.com/contact et ainsi de suite.mod_rewrite pour supprimer .php mais toujours servir le fichier .php?
Cela fonctionne comme je le voulais, mais je m'attendais à ce qu'il serve toujours mon fichier contact.php, mais montre simplement à l'utilisateur qu'ils étaient à/contact plutôt que contact.php. Mais, il cherche un fichier appelé juste contact, qui, n'est pas là.
Alors, qu'est-ce que je dois faire, utilisez toujours mon fichier contact.php, mais réécrivez l'URL de l'utilisateur à/contact?
Voici ce que je suis en utilisant:
SetEnv APPLICATION_ENV development
RewriteEngine on
RewriteBase/
# Always use www.
RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]
RewriteRule ^(.*)$ http://www.mysite.com/$1 [L,R=301]
# Change urlpath.php to urlpath
RewriteCond %{HTTP_HOST} ^www\.mysite\.com$ [NC]
RewriteRule ^(.*)\.php$ http://www.mysite.com/$1 [L,R=301]
Le seul problème avec celui-ci est que lorsque vous allez sur www.mysite.com, il ne prendra pas le fichier index.php. Que devons-nous ajouter à cette règle pour nous assurer que ce seront des fichiers d'index dans un répertoire? –
Belle prise. J'ai ajouté un 'RewriteCond' au dernier bloc pour ne pas exécuter le' RewriteRule' si nous demandons la page d'index. – NeilCrosby
La bonne façon d'ajouter un paramètre de requête est d'utiliser l'indicateur QSA. – Fozi