.htacess clean url removed .php now form requires the same

Hello, I removed .php extension with .htaccess
RewriteCond %{THE_REQUEST} [1]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
.php is removed, but wherever I have a form where
action = somepage.php
I am forced to change it to
action = somepage
these are old websites I am fixing, luckily one has all
action =$_SERVER[‘PHP_SELF’]
is there someway to resolve so action takes the posted values no matter if
action = somepage.php or
action somepage or
action = $_SERVER[‘PHP_SELF’]
So Instead of
form enctype=“multipart/form-data” method=“post” action=“actionfr.php”
I am forced to change it to:
form method=“post” action=“actionfr”
Same goes for
form method=“post” action=“<?php echo $_SERVER[‘PHP_SELF’]?>”
Many Thanks


  1. A-Z ↩︎

You’ll probably have to not redirect a .php URL if it’s a POST request.

[color=red]RewriteCond %{REQUEST_METHOD} !=POST[/color]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\\s([^.]+)\\.php [NC]
RewriteRule ^ %1 [R,L]

([^.]+)\.php

Also, beware of a potential bug here. If any of your paths have a period in them, then this pattern will fail to match those URLs.