У вас должно быть 2 правила.1 для перенаправления без расширения в php-файл и 1 для перенаправления php в без расширения, если кто-то его набирает. Вам не нужно это правило Redirect 301
.
У меня будут свои правила, описанные ниже.
Заменить эти правила
RewriteEngine On
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
этим
RewriteEngine On
#redirect a direct request for the php file to no extension
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\s/([^\s]+)\.php
RewriteRule ^/?(.*)\.php$ /$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^/?(.*)/?$ /$1.php [L]
RewriteCond %{HTTPS} off
RewriteRule ^/?(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]