Please assist me to stop this from removing the ".php" extension in sub directories eg: https://www.example.com/enquire/contactmail
instead of: https://www.example.com/enquire/contactmail.php
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
\#####exclude /cp folder####
RewriteCond %{REQUEST_URI} !^/enquire
RewriteCond %{REQUEST_FILENAME}\\.php -f
RewriteRule ^(.\*)$ $1.php
RewriteCond %{THE_REQUEST} ^\[A-Z\]{3,9}\\ /((?!cp)\[^.\] )\\.php
RewriteRule ^/?(.\*)\\.php$ /$1 \[NC,L,QSA,R=301\]
RewriteRule ^enquire/(.\*)$ contactmail.php?s=$1 \[NC,L,QSA\]
RewriteRule ^enquire/(\[0-9\] )$ contactmail.php?a=$1 \[NC,L,QSA\]
CodePudding user response:
As I understand you have a working solution in place to rewrite incoming requests without ".php" extension to internal resources with that "file name extension".
And now you ask how you can add an exception from that, so that the internal rewrite does not get applied to requests, that target resources inside certain folders in the requested path, physical or virtual folders.
If that is correct then indeed you should implement an exception for those requests. Exceptions should get implemented before more general rules. So further up in the configuration file since that is processed from top to bottom.
That should roughly be what you are looking for:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
# exception for the /enquire request path
RewriteRule ^enquire/(\d )$ contactmail.php?a=$1 [NC,END,QSA]
RewriteRule ^enquire/(.*)$ contactmail.php?s=$1 [NC,END,QSA]
# redirect requests that specify a ".php" extension
RewriteRule ^(.*)\.php$ $1 [NC,L,QSA,R=301]
# rewrite requests if a corresponding php file exists
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php
CodePudding user response:
Just Use the blow .htaccess to remove the .php extension
IndexIgnore * # prevent directory listing
Order deny,allow
Allow from *
# ------------------------------------------
# Rewrite so that php extentions are not shown
RewriteEngine on
#.php URL Rewrite
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php