Home > Blockchain >  Remove the subfolder from the url path, given that there is no slash at the end
Remove the subfolder from the url path, given that there is no slash at the end

Time:11-10

I have the htaccess:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /pages/$1 [L]

it removes /pages/ from the url to the pages

but when i open link without the slash at the end:

site.com/contacts

it is redirected to

site.com/pages/contacts/

Is there a way to fix this?


I've tried different results, most often other options cause a redirect to site.com/index.php ( site.com/pages/index.php)

CodePudding user response:

It is happening because pages/contacts is a directory and Apache mod_dir module is adding a trailing slash after request to a directory.

You can check for directory presence and add a trailing / via a rule before rewrite to pages/:

RewriteEngine On

# add a trailing slash if pages/$1 is a directory
RewriteCond %{DOCUMENT_ROOT}/pages/$1 -d
RewriteRule ^(.*?[^/])$ %{REQUEST_URI}/ [L,R=301,NE]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /pages/$1 [L]

Make sure to use a different browser or remove cache data from your browser to test this rule to avoid old cache.

  • Related