Home > Enterprise >  Removing .php extension except sub directory called enquire
Removing .php extension except sub directory called enquire

Time:11-25

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
  • Related