|
Redirect non existing inbound links with mod rewrite
|
(Page 4 of 6)
Redirect non existing inbound links to existing urls for recapturing PageRank and retain visitors who might be lost by an unexpected 404 (Not Found) error code.
Below is a routine that correct most of the badly-coded and/or commonly misspelled internal and inbound links.
RewriteEngine On
#+---------------------------------
#+ - BEGIN: URL fixup redirect routine
#+---------------------------------
# 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]
# 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 . http://www.example.com%{ENV:myUri}%{ENV:myQuery} [R=301,L]
#+---------------------------------
#+ - END: URL fixup redirect routine
#+---------------------------------
EXPLAIN: The routine fixup multiple mistakes at ones and redirect only one time when mistake(s) where found.
NEXT » Search engine friendly urls with mod rewrite
|
|
|