39 votes

Comment masquer l'extension .php dans le fichier .htaccess ?

Duplicata possible :
Supprimer l'extension .php avec .htaccess

J'essaie de masquer l'extension de fichier .php mais, pour une raison quelconque, je n'y arrive pas. Ma dernière tentative était la suivante :

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule ^folder/([a-zA-Z_\-0-9]+)/?$ /folder/$1.php
</IfModule>

J'ai essayé de nombreuses variantes du code que j'ai trouvé en ligne, mais je n'ai toujours pas réussi. Le fichier .htaccess est placé dans le répertoire racine.

0 votes

Cela me semble correct (sauf que vous voudrez peut-être ignorer la barre oblique de fin de ligne). Êtes-vous sûr que htaccess est autorisé sur votre hôte et que mod_rewrite est pris en charge ?

0 votes

Cachez-vous l'extension pour des raisons esthétiques ou de sécurité ? Si c'est le cas, il existe d'autres moyens de découvrir le langage de script utilisé par le site. Par exemple : ashleysark.com/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42

0 votes

Cela fonctionne bien pour moi si je clique sur un lien et que j'enlève la terminaison .php.

94voto

ryanve Points 6881

J'ai utilisé ça :

RewriteEngine On

# Unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ http://example.com/folder/$1 [R=301,L]

# Redirect external .php requests to extensionless URL
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ http://example.com/folder/$1 [R=301,L]

# Resolve .php file for extensionless PHP URLs
RewriteRule ^([^/.]+)$ $1.php [L]

Voir aussi : cette question

0 votes

Merci ryanve, ça a marché à merveille !

1 votes

Merci Ryanve C'était incroyable !

1 votes

Cela fonctionne bien avec le système Windows, mais impossible de réécrire dans mon Ubuntu 13.04.. Avez-vous une solution pour cela ? Merci d'avance !

15voto

mario Points 76989

L'autre option pour utiliser les scripts PHP sans extension est la suivante

Options +MultiViews

Ou même simplement en suivant dans les répertoires .htaccess :

DefaultType application/x-httpd-php

Cette dernière permet d'avoir tous les noms de fichiers sans extension script sont traités comme des scripts PHP. Alors que MultiViews fait en sorte que le serveur web recherche des alternatives, lorsque seul le nom de base est fourni (il y a cependant un impact sur les performances).

0 votes

Probablement pourquoi Dan dans les commentaires a pu le faire fonctionner sans l'extension. Bonne réponse.

0 votes

@mario C'est incroyable si ça marche.

1 votes

La première solution a fonctionné pour moi. J'ai ajouté cela au répertoire racine .htaccess, en utilisant Wordpress. Mon script redirige ( l'extension .php est cachée et non nécessaire)

8voto

typeoneerror Points 19087

1) Êtes-vous sûr que le module mod_rewrite est activé ? Vérifiez phpinfo()

2) Votre règle ci-dessus suppose que l'URL commence par "folder". Est-ce exact ? Voulez-vous vraiment que l'URL contienne "folder" ? Cela correspondrait à une URL comme :

/folder/thing -> /folder/thing.php

Si vous voulez vraiment

/thing -> /folder/thing.php

Vous devez supprimer le dossier de l'expression de correspondance.

Je l'utilise habituellement pour diriger la demande vers la page sans php (mais la vôtre devrait fonctionner, ce qui me fait penser que le mod_rewrite n'est peut-être pas activé) :

RewriteRule ^([^/\.]+)/?$ $1.php  [L,QSA]

3) En supposant que vous déclarez vos règles dans un fichier .htaccess, votre installation permet-elle de définir des options (AllowOverride) prioritaires dans les fichiers .htaccess ? Certains hôtes partagés ne le permettent pas.

Lorsque le serveur trouve un fichier .htaccess (spécifié par la directive AccessFileName), il doit savoir quelles sont les directives déclarées dans ce peuvent remplacer les informations d'accès précédentes.

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