ISAPI Rewrite

From Hostek.com Wiki
Revision as of 23:10, 7 August 2012 by Justinaes (Talk | contribs) (This page explains how to use ISAPI_Rewrites and redirects for your site. If you are redirecting to different URLs or rewriting your URL.)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search


ISAPI_Rewrites and Redirects Version 3

ISAPI_Rewrite Version 3 is a powerful URL manipulation engine based on regular expressions. Hostek.com has lots of experience with Isapi_Rewrite Hosting. Here are a couple of examples of using Isapi_Rewrite Version 3:

NOTE: Place the rewrite rules in a file named .htaccess and place it at the web root (ie, /wwwroot folder)


Simple Redirects and Rewrites

Redirecting to a different domain

If you need to redirect your website to another website

RewriteEngine On

RewriteCond %{HTTP_HOST} ^domain.com$ [NC]
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=301,L]

Redirect File Names

To have your index.htm page auto redirect to index.asp user this example

RewriteEngine on

RewriteRule index.htm index.asp [I,O,R=301,L]

Subfolder Rewrite

To redirect your domain to a subfolder of that domain example: www.domain.com to www.domain.com/folder

RewriteEngine On

# Exclude requests already going to /subfolder to avoid an infinite loop
RewriteRule ^subfolder.*$ - [NC,L]

# Rewrite normal requests to /subfolder
RewriteRule ^(.*)$ /subfolder/$1 [L]

non-www. to www. Redirects

Redirecting non-www version to www., example domain.com to www.domain.com

RewriteEngine on

RewriteCond %{HTTPS} (on)?
RewriteCond %{HTTP:Host} ^(?!www\.)(.+)$ [NC]
RewriteCond %{REQUEST_URI} (.+)
RewriteRule .? http(?%1s)://www.%2%3 [R=301,L]

Suppose you have URL like www.example.com/foo.asp?a=A&b=B&c=C and you want to access it as www.example.com/foo.asp/a/A/b/B/c/

RewriteEngine on
RewriteRule ^(.*?\.asp)/([^/]*)/([^/]*)(/.+)? $1$4?$2=$3 [NC,LP,QSA


HTTP to HTTPS SSL Rewrites

SSL

Suppose you have URL like http://shop.example.com and you want your visitors to be redirected to https://shop.example.com

Here is example how to force SSL for certain folder. Simply put following rules into the .htaccess file in this folder:

RewriteEngine on

#Fix missing trailing slash char on folders
RewriteRule ^([^.?]+[^.?/])$ $1/ [R,L]

#Redirect non-HTTPS to HTTPS
RewriteCond %{HTTP:Host} (.*)
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} (.*)
RewriteRule .? https://%1%2 [R,L]

Shared SSL

RewriteEngine on

# handle non-www HTTPS redirects. Consecutive conditions are implicitly ANDed together.
RewriteCond %{SERVER_PORT} ^443$
RewriteCond  %{HTTP_HOST}  ^(?!www\.).*mywebsite\.com$
RedirectRule ^/(.*)$ https://secure#.ezhostingserver.com/mywebsite-com/$1 [R=301]

# All requests arriving to this point either use www for the hostname, or use 
# HTTP for the protocol. 

# handle non-www non-HTTPS redirects
RewriteCond  %{HTTP_HOST}  ^(?!www\.).*mywebsite\.com$
RedirectRule ^/(.*)$ http://www.mywebsite.com/$1 [R=301]


Site Crawlers

Example on how to prevent certain spiders from crawling your site.

RewriteEngine on

RewriteCond %{HTTP_USER_AGENT} ^Baiduspider.*$
RewriteRule .* /block.htm

RewriteCond %{HTTP_USER_AGENT} ^Yandex.*$
RewriteRule .* /block.htm


Wile-Card Subdomains & Variables Rewrites

Here is an example to show how to get the variables from positions 1 and 2 without it mattering how many items are in the URL. In other words, a good example for a rewrite rule for optional parameters.

Variable URLs

Let's say you want to have a URL display like: http://your_domain.com/some-folder/34-77-some-key-word.html But you want that to really process a query like:http://your_domain.com/folder/search.asp?country=34&city=77

RewriteEngine on
RewriteRule ^some-folder/([^-]+)-([^-]+)-.*$ /folder/search.asp?country=$1&city=$2

Wild-Card Subdomains

Rewrite all wild-card sub-domain requests to a folder without affecting "your_domain.com" or "www.your_domain.com"

# Ignore requests that are already rewritten 
RewriteRule ^subdomainfolder/.*$ - [NC,L]

# Rewrite all requests to non-www sub-domains to /subdomainfolder 
RewriteCond %{HTTP_HOST} !^(www\.)?your_domain\.com$ [NC] 
RewriteRule ^(.*)$ /subdomainfolder/$1 [L]

For more Examples and other uses please visit Helicon Tech