httpd.conf mod_rewrite HTTPS et supprimer l’extension PHP

J’ai été coincé sur cela pendant des siècles. Je ne peux pas sembler obtenir httpd.conf pour réécrire les URL pour append https (si elle n’est pas utilisée) et supprimer l’extension .php. Je peux soit travailler, mais pas les deux en même temps. https://example.com/index donne une erreur 404 lorsque index.php existe.

Donc, ce que j’essaie de faire, c’est de transformer les URL telles que example.com/index.php en https://example.com/index

Si je désactive la règle HTTPS, cela fonctionne.
httpd.conf:

RewriteEngine On RewriteRule ^(.*)$ $1.php [QSA] RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} RewriteRule $ https://example.com/ [L,R] RewriteCond %{HTTP_USER_AGENT} libwww-perl.* RewriteRule .* – [F,L] 

J’ai ajouté plusieurs règles telles que:

 RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME}.php -f RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [L] 

Et:

 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(([A-Za-z0-9\-]+/)*[A-Za-z0-9\-]+)?$ $1.php 

Mais en vain.

Toute aide est la bienvenue.

Cela devrait fonctionner comme prévu.

Pour votre bloc http

 RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^/(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{DOCUMENT_ROOT}/$1\.php -f RewriteRule ^/(.*)$ /$1.php [L,QSA] RewriteCond %{HTTP_USER_AGENT} libwww-perl RewriteRule ^ – [F] 

Pour votre bloc https (ssl)

 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{DOCUMENT_ROOT}/$1\.php -f RewriteRule ^/(.*)$ /$1.php [L,QSA] RewriteCond %{HTTP_USER_AGENT} libwww-perl RewriteRule ^ – [F] 

Remarque: je vous suggère d’utiliser un htaccess dans le dossier racine (le dossier racine du document ssl doit être identique au domaine “http”). De cette façon, vous n’aurez pas de code partagé / dupliqué