Suppression de l’extension de fichier .php avec le fichier .htaccess

Je veux que www.example.com/https://stackoverflow.com/questions/10462799/removing-php-file-extension-with-htaccess-file/about.php soit juste www.example.com/about

J’ai créé un fichier .htaccess et l’ai placé à la racine de mon serveur. J’utilise l’hébergement mutualisé Linux. PHP version 5.2

RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ $1.php 

Il semble que ce code devrait fonctionner correctement, mais pour une raison quelconque, ce n’est pas le cas. Je reçois une erreur 404 lorsque j’essaie de naviguer vers une page sans l’extension .php.

Voici mon balisage aussi:

  

Vous pouvez voir que j’ai essayé d’utiliser l’extension php dans le lien et aussi essayé sans. Les liens avec l’extension php vont à la page, mais ne suppriment pas l’extension.

J’ai fait un test pour voir si module_rewrite était activé en mettant des déchets et en renvoyant une erreur 500.

Utilisez ce code pour masquer / supprimer l’extension .php :

 Options +FollowSymLinks -MultiViews # Turn mod_rewrite on RewriteEngine On RewriteBase / ## hide .php extension # To externally redirect /dir/foo.php to /dir/foo RewriteCond %{THE_REQUEST} ^[AZ]{3,}\s([^.]+)\.php [NC] RewriteRule ^ %1 [R,L,NC] ## To internally redirect /dir/foo to /dir/foo.php RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^ %{REQUEST_URI}.php [L] 

Donc, après un long combat avec Google, j’ai finalement trouvé celui-là. Cela fonctionne avec l’hébergement partagé Godaddy. Il supprime les extensions de fichiers php afin que http://votresite.com/about.php devienne http://votresite.com/about

 Options -MultiViews RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f #If requested is not a filename... RewriteCond %{REQUEST_FILENAME} !-d #And not a directory RewriteRule ^(.*)$ $1.php [L] # perform this redirect 

(supprimer les commentaires avant le téléchargement sur le serveur)

J’ai eu ce problème aussi, mais j’ai trouvé que cela semblait résoudre le problème de GoDaddy .htaccess.

 # Fix Rewrite Options -Multiviews # Mod Rewrite Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ $1.php 

Collé au-dessus de tout dans mon fichier .htaccess a fonctionné pour moi …

 ## 301 Redirects RewriteCond %{QUERY_STRING} ^$ RewriteRule ^(.*)\.asp$ $1? [R=301,NE,NC,L] 

Votre règle de réécriture n’est pas correcte, elle est dans le mauvais sens. Essayez plutôt ceci:

 RewriteRule ^(.*).php$ /$1 [L,R=301]