Supprimer .php des URL avec htaccess

EDIT: fichier .htaccess actuel:

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

Mon site est hébergé dans un sous-dossier d’un domaine connecté à un grand compte d’hébergement.

 basesite /iioengine /forums /.htaccess //file works /.... //other MyBB content /demos.php /index.php //iioengine.com (homepage) /.htaccess //file doesn't work /... //other iioengine php pages 

Est-ce le problème que j’utilise deux fichiers htaccess différents?

Voici un lien qui doit fonctionner: http://iioengine.com/demos

J’ai remarqué que ce fichier htaccess actuel perturbe également toutes les URL des forums

Cela ne fonctionne plus: http://iioengine.com/forums/Forum-Box2D

EDIT: Merci pour votre réouverture, j’ai fait des progrès. Voici mon fichier htaccess actuel:

  RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d  

J’ai toujours 404 pages, mais si je mets cette ligne dans:

RewriteRule . /index.php [L]

toutes les requêtes non ‘. php’ sont envoyées à la page d’accueil … Ainsi, mod_rewrite est définitivement activé, il ne fonctionne tout simplement pas correctement. Quelqu’un sait ce que le problème pourrait être?

EDIT : Ce n’est pas un doublon – aucune des autres solutions ne fonctionne pour moi. Ma question n’est pas de savoir si les solutions existent , c’est pourquoi elles ne travaillent pas pour moi . Personne n’a été capable de résoudre ce problème, j’ai essayé plusieurs solutions moi-même. N’est-ce pas le but de ce forum d’obtenir des solutions à des problèmes spécifiques?

Permettez-moi de clarifier …

MyBB fonctionne dans un sous-dossier et ses réécritures fonctionnent correctement. Ce lien, par exemple, fonctionne: http://iioengine.com/forums/Forum-Box2D

Toutes les pages php qui ne font pas partie de MyBB ont toujours l’extension .php dans leurs URL – j’essaie de les supprimer mais rien ne fonctionne. Exemple: http://iioengine.com/demos

… [article original]

Il y a évidemment beaucoup d’informations à ce sujet, mais j’ai essayé près d’une douzaine de solutions différentes et je n’ai pas dépassé une page 404.

Voici mon site: http://iioengine.com/ , toutes les pages sont en php et tout ce qui n’est pas la page d’accueil et toutes les pages des forums ont un «.php» à la fin de leur URL que je voudrais supprimer.

En plus de redirect les requêtes non-‘. Php’ vers les bonnes pages, je voudrais également supprimer la partie ‘.php’ même si elle fait partie de la requête (car tout mon contenu spécifie déjà ‘.php’ hyperliens).

C’est ce que j’ai fait jusqu’ici, la plupart du temps tiré de cet article , mais ça ne marche pas, j’ai une page 404.

 RewriteEngine on RewriteBase / RewriteCond %{SCRIPT_FILENAME} !-d RewriteCond %{SCRIPT_FILENAME} !-f RewriteRule ^(.*)$ $1.php [L,QSA] RewriteCond %{REQUEST_URI} ^/(.*).php$ RewriteRule ^(.*)$ %1 [L,QSA] 

De quoi ai-je besoin dans mon fichier htaccess pour supprimer l’extension de fichier de l’URL dans tous les cas? Merci

Essayez ce code pour cacher .php (fonctionnera dans les deux sens):

 Options +FollowSymLinks -MultiViews # Turn mod_rewrite on RewriteEngine On RewriteBase / ## don't touch /forum URIs RewriteRule ^forums/ - [L,NC] ## hide .php extension snippet # To externally redirect /dir/foo.php to /dir/foo RewriteCond %{THE_REQUEST} ^[AZ]{3,}\s([^.]+)\.php [NC] RewriteRule ^ %1 [R,L] # To internally forward /dir/foo to /dir/foo.php RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^(.*?)/?$ $1.php [L] 

essaye ça.

  RewriteEngine on RewriteCond %{SCRIPT_FILENAME} !-d RewriteCond %{SCRIPT_FILENAME} !-f RewriteRule ^(.*)$ $1.php [L,QSA]  

Si cela ne fonctionne pas, votre serveur n’a pas activé mod_rewrite ou prend en charge la réécriture d’url.

Voici la syntaxe la plus simple que j’ai trouvée, qui résulterait comme suit:

 RewriteEngine on RewriteRule ^/?PrivacyPolicy$ legal.php?mode=privacy [NC,L] RewriteRule ^Report/([0-9]+)$ report.php?id=$1 [NC,L] 

Résultats:

  1. PrivacyPolicy to legal.php? Mode = privacy
  2. Rapport / 55 à report.php? Id = 55

Cela devrait fonctionner

 Options -Indexes +FollowSymlinks -MultiViews RewriteEngine on DirectoryIndex index.php # REDIRECT Force requests for named index files to drop the index file filename, and force non-www to avoid redirect loop RewriteCond %{THE_REQUEST} ^[AZ]{3,9}\ /([^/]*/)*index\.(html?|php[45]?)(\?[^\ ]*)?\ HTTP/ RewriteRule ^(([^/]*/)*)index\.(html?|php[45]?)$ http://example.com/$1 [R=301,L] RewriteCond %{THE_REQUEST} ^[AZ]{3,9}\ /([^/]+)/([^\.]+)\.php\ HTTP/ RewriteRule ^([a-zA-Z0-9_-]+)/([^.]+)\.php$ http://example.com/$1/$2 [R=301,L] RewriteCond %{THE_REQUEST} ^[AZ]{3,9}\ /([^/]+)/([^/]+)/([^\.]+)\.php\ HTTP/ RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([^.]+)\.php$ http://example.com/$1/$2/$3 [R=301,L] # REDIRECT www to non-wwww RewriteCond %{HTTP_HOST} !^example\.com$ [NC] RewriteRule .? http://example.com%{REQUEST_URI} [R=301,L] # REWRITE url to filepath RewriteRule ^([a-zA-Z0-9_-]+)/([^/.]+)$ /$1/$2.php [L] RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([^/.]+)$ /$1/$2/$3.php [L] 

Sur apache 2.4 et versions ultérieures, vous pouvez utiliser l’indicateur suivant avec END pour supprimer l’extension .php des URL.

 RewriteEngine on RewriteRule ^(.+)\.php$ /$1 [NC,L,R=301] RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^(.+)/?$ /$1.php [END]