Seo-Friendly Links with mod_rewrite

mod rewrite seo friendly links

Apache’s mod_rewrite module solves several typical Search Engine Optimization (SEO) problems. It is a module which provides a powerful way to do sophisticated url manipulations. Not only can mod rewrite be used to avoid duplicate content, redirect moved urls or non existing inbound links, and create search engine friendly urls. It can also be used for to gain higher PageRank and search engines rankings, get your web site indexed by the search engines, and receiving more visitors. Here are some the most popular url manipulations.

Avoid duplicate content

[sourcecode language=”bash”]
RewriteEngine On
# Redirect non-www to www.
RewriteCond %{HTTP_HOST} !^$ [NC]
RewriteRule (.*)$1 [R=301,L]
# Redirect direct requests for "anything/index.html" to "anything/"
RewriteRule ^(([^/]+/)*)index\.html$1 [R=301,L]

ALSO READ:  The 13 Best Free WordPress Plugins

Redirect relocated URLs

[sourcecode language=”bash”]
RewriteEngine On
# Redirect relocated old urls to the new urls
RewriteRule ^oldpage\.html$ [R=301,L]
RewriteRule ^directory/oldpage\.html$ [R=301,L]
# Redirect relocated directories to the new directories
RewriteRule ^olddir/(.*)$1 [R=301,L]

Redirect non-existing incoming links

[sourcecode language=”bash”]
# Get the requested URI, query string and hostname.
RewriteCond %{REQUEST_URI} ^(/[^?]*)([?].*)?$
RewriteRule . – [E=myUri:%1,E=myQuery:%2]

# Replace hmtl, htlm, and thml file extensions with html extension.
RewriteCond %{ENV:myUri} ^(.*)[.,](hmtl|htlm|thml)$ [NC]
RewriteRule . – [E=myRedirect:yes,E=myUri:%1.html]

# Replace comma(s) or multiple filetype delimiter periods in the url
# with a single period.
RewriteCond %{ENV:myUri} ^(.*)([,.]{2,}|,)((s?html?|php[1-9]?|aspx?|pdf|xls).*)$ [NC]
RewriteRule . – [E=myRedirect:yes,E=myUri:%1.%3]

# Remove invalid trailing characters
RewriteCond %{ENV:myUri} ^([/0-9a-z._\-]*)[^/0-9a-z._\-] [NC]
RewriteRule . – [E=myRedirect:yes,E=myUri:%1]

ALSO READ:  The Importance of Anchor Text in Backlinks

# Remove trailing punctutation
RewriteCond %{ENV:myUri} ^(.*)[._\-]+$
RewriteRule . – [E=myRedirect:yes,E=myUri:%1]

# Do the external 301 redirect only if needed and the resource exists
# at the corrected URI.
RewriteCond %{ENV:myRedirect} ^yes$ [NC]
RewriteCond %{DOCUMENT_ROOT}%{ENV:myUri} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{ENV:myUri} -d
RewriteRule .{ENV:myUri}%{ENV:myQuery} [R=301,L]

SEO-friendly URLs

For example, your urls look like this:

Obviously, you want to transform it into something that look like this:

[sourcecode language=”bash”]
RewriteEngine On
RewriteRule ^widgets/(.*)/page(.*)\.php /widgets.php?cat=$1&page=$2 [L]

Leave a Reply

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

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>