How can I add a trailing slash to requested URLs Print

  • 0

Description of the problem:

Some search engines remove the trailing slash from urls that look like directories - e.g. Yahoo does it. However it 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: enarion.net/google/ is indexed in Yahoo as enarion.net/google - which would result in two urls with the same content.

Solution:

The solution is to create a .htaccess rewrite rule that adds the trailing slashes to these urls. Example - redirect all urls that do not have a trailing slash to urls with a trailing slash:

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

Explanation of the 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:

 RewriteCond %{REQUEST_FILENAME} !-f 

makes sure that existing files will not get a slash added. You shouldn't do the same with directories since this would exlude the rewrite behaviour for existing directories. The line

 RewriteCond %{REQUEST_URI} !example.php

exludes a sample url that should not be rewritten. This is just an example. If you do not have a file or url that should not be rewritten, remove this line. The condition:

 RewriteCond %{REQUEST_URI} !(.*)/$ 

finally fires when a url does not contain a trailing slash. Now we need to redirect the urls without the trailing slash: pre> RewriteRule ^(.*)$ http://domain.com/$1/ [L,R=301] does the 301 redirect to the url, with the trailing slash appended. You should replace domain.com with your url.


Was this answer helpful?

« Back

Powered by WHMCompleteSolution