Add Trailing Slash to URL (.htaccess)

Some of search engines remove the trailing slash from URLs that look like directories – e.g. Yahoo does it while listing on their search engine. This could result into duplicated content problems when the same page content is accessible under different urls. Apache gives some more information in the Apache Server FAQ.

Let’s have a look at an example: chandigarhcity.info/business_contact_details/5101/MaxWeb-Solutions/, indianhelpline.in/business-contact/4867-maxweb-solutions/ are indexed in Yahoo as chandigarhcity.info/business_contact_details/5101/MaxWeb-Solutions, indianhelpline.in/business-contact/4867-maxweb-solutions – which would result in two urls with the same content.

The solution was to create a .htaccess rewrite rule that adds the trailing slashes to these urls.

Example – redirect all urls that doesn’t have a trailing slash to urls with a trailing slash

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !example.php
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://domain.<tld>/$1/ [L,R=301]

Explanation of this add trailing slash .htaccess rewrite rule

The first line tells Apache that this is code for the rewrite engine of the mod_rewrite module of Apache.
The 2nd line sets the current directory as page root. But the interesting part is following now:

RewriteCond %{REQUEST_FILENAME} !-f makes sure that files that are existing will not get a slash added. You shouldn’t do the same with directories since this would exclude the rewrite behaviour for existing directories.

The line RewriteCond %{REQUEST_URI} !example.php excludes a sample URL that shouldn’t be rewritten. This is just an example – if you don’t have any file or URL that shouldn’t be rewritten, remove this line.

The condition RewriteCond %{REQUEST_URI} !(.*)/$ finally fires when a urls doesn’t contain a trailing slash – this is all what we want. Now we need to redirect these URL with the trailing slash:

RewriteRule ^(.*)$ http://domain.<tld>/$1/ [L,R=301] does the 301 redirect to the URL with the trailing slash appended for us. You should replace domain.com with your url. Make sure that you use the right domain name.

Leave a Reply

Your email address will not be published. Required fields are marked *