Amir Oof
Amir Oof

Reputation: 59

redirecting files with html extension to files without extension (in url)

I have recently changed my website url using htaccess so that my urls will not show file extensions. Now my problem is as I have created a new xml sitemap so that my url will be extensionless!!! the Google webmaster tool is telling me about duplicate content issue!! ie. page and page.html have same title.... so my question is how do i redirect the urls with file extension html to urls with out extension!!! this is an example of my website url with html extension

http://www.shenazhpeyk.co.uk/coding-machines.html

I want to redirect and change it to

http://www.shenazhpeyk.co.uk/coding-machines

so that will fix the issue with Google webmaster tools (Please provide me a code for use in htaccess file)

Many Thanks

Upvotes: 5

Views: 6512

Answers (3)

Jordan
Jordan

Reputation: 1670

Found this code as well. Not sure if it will accomplish the same thing. Seems to work for me as does the one above (for PHP).

RewriteEngine On

# Unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ /$1 [R=301,L]

# Redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ /$1 [R=301,L]

# Resolve .php file for extensionless php urls
RewriteRule ^([^/.]+)$ $1.php [L]

I am wondering about the trailing slashes and whether those should be there or omitted?

Upvotes: 2

Suhas
Suhas

Reputation: 61

Try this:

Options +FollowSymLinks -MultiViews
DirectorySlash Off

RewriteEngine On

RewriteCond %{SCRIPT_FILENAME}/ -d
RewriteCond %{SCRIPT_FILENAME}.html !-f
RewriteRule [^/]$ %{REQUEST_URI}/ [R=301,L]

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^(.+)\.html$ /$1 [R=301,L]

RewriteCond %{SCRIPT_FILENAME}.html -f
RewriteRule [^/]$ %{REQUEST_URI}.html [QSA,L]

Upvotes: 0

Ulrich Palha
Ulrich Palha

Reputation: 9519

Try adding the following to the .htaccess file in the root directory of your site redirect URLs with .html extension and remove it.

RewriteEngine on
RewriteBase / 

#redirect to remove the .html extension
RewriteRule ^(.+)\.html$ $1 [L,NC,R=301] 

Upvotes: 0

Related Questions