Apache mod_rewrite ルールからアドバンスドポリシーへの移行
Apache HTTP サーバは、HTTP リクエスト URL を書き換えるための mod_rewrite として知られるエンジンを提供します。mod_rewriteルールをApacheからNetScaler ADCに移行すると、バックエンドサーバーのパフォーマンスが向上します。さらに、NetScaler ADCは通常、複数の(場合によっては数千の)Webサーバーの負荷分散を行うため、ルールをNetScaler ADCに移行すると、これらのルールを一元的に制御できます。
次に、mod_rewrite関数の例と、NetScaler ADCでのこれらの関数の書き換えポリシーとレスポンダーポリシーへの変換を示します。
URL バリエーションを正規 URL に変換する
一部の Web サーバーでは、1 つのリソースに対して複数の URL を持つことができます。正規 URL は使用、配布する必要がありますが、他の URL はショートカットまたは内部 URL として存在できます。最初のリクエストに使用された URL に関係なく、正規 URL がユーザーに表示されるようにすることができます。
次の例では、URL /~user は /u/user に変換されます。
URLを変換するためのApache mod_rewriteソリューション
RewriteRule ^/~([^/]+)/?(.*) /u/$1/$2[R]
<!--NeedCopy-->
URLを変換するためのNetScaler ADCソリューション
add responder action act1 redirect '"/u/"+HTTP.REQ.URL.AFTER_STR("/~")'
add responder policy pol1 'HTTP.REQ.URL.STARTSWITH("/~") && HTTP.REQ.URL.LENGTH.GT(2)' act1
bind responder global pol1 100
<!--NeedCopy-->
ホスト名のバリエーションを正規ホスト名に変換する
サイトに到達するために、特定のホスト名の使用を強制することができます。たとえば、example.com の代わりに www.example.com の使用を強制することができます。
80 以外のポートで実行されているサイトに特定のホスト名を強制するための Apache mod_rewrite ソリューション
RewriteCond %{HTTP_HOST} !^www.example.com
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{SERVER_PORT} !^80$
RewriteRule ^/(.*) http://www.example.com:%{SERVER_PORT}/$1 [L,R]
<!--NeedCopy-->
ポート 80 で実行されているサイトに特定のホスト名を強制するための Apache mod_rewrite ソリューション
RewriteCond %{HTTP_HOST} !^www.example.com
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) http://www.example.com/$1 [L,R]
<!--NeedCopy-->
80以外のポートで実行されているサイトに特定のホスト名を強制するNetScaler ADCソリューション
add responder action act1 redirect '"http://www.example.com:"+CLIENT.TCP.DSTPORT+HTTP.REQ.URL'
add responder policy pol1 '!HTTP.REQ.HOSTNAME.CONTAINS("www.example.com")&&!HTTP.REQ.HOSTNAME.EQ("")&&!HTTP.REQ.HOSTNAME.PORT.EQ(80)&&HTTP.REQ.HOSTNAME.CONTAINS("example.com")' act1
bind responder global pol1 100 END
<!--NeedCopy-->
ポート80で実行されているサイトに特定のホスト名を強制するためのNetScaler ADCソリューション
add responder action act1 redirect '"http://www.example.com"+HTTP.REQ.URL'
add responder policy pol1 '!HTTP.REQ.HOSTNAME.CONTAINS("www.example.com")&&!HTTP.REQ.HOSTNAME.EQ("")&&HTTP.REQ.HOSTNAME.PORT.EQ(80)&&HTTP.REQ.HOSTNAME.CONTAINS("example.com")' act1
bind responder global pol1 100 END
<!--NeedCopy-->
ドキュメントルートの移動
通常、Web サーバーのドキュメントルートは URL「/」に基づいています。ただし、ドキュメントルートは任意のディレクトリにすることができます。トップレベルの「/」ディレクトリから別のディレクトリに変更された場合、トラフィックをドキュメントルートにリダイレクトできます。
次の例では、ドキュメントルートを/から /e/www に変更します。最初の 2 つの例では、単純に 1 つの文字列を別の文字列に置き換えます。3 番目の例は、ルートディレクトリを置き換えるとともに、URL の残りの部分 (パスとクエリ文字列) を保持するため、より汎用的です。たとえば、/example/file.html を /e/www/example/file.html にリダイレクトします。
ドキュメントルートを移動するための Apache mod_rewrite ソリューション
RewriteEngine on
RewriteRule ^/$ /e/www/ [R]
<!--NeedCopy-->
ドキュメントルートを移動するためのNetScaler ADCソリューション
add responder action act1 redirect '"/e/www/"'
add responder policy pol1 'HTTP.REQ.URL.EQ("/")' act1
bind responder global pol1 100
<!--NeedCopy-->
ドキュメントルートを移動し、パス情報を要求に追加するためのNetScaler ADCソリューション
add responder action act1 redirect '"/e/www"+HTTP.REQ.URL'
add responder policy pol1 '!HTTP.REQ.URL.STARTSWITH("/e/www/")' act1
bind responder global pol1 100 END
<!--NeedCopy-->
ホームディレクトリを新しい Web サーバーに移動する
Web サーバー上のホームディレクトリに送信される要求を別の Web サーバーにリダイレクトしたい場合があります。たとえば、新しい Web サーバーが時間の経過とともに古いサーバーを置き換える場合、ホームディレクトリを新しい場所に移行するときに、移行されたホームディレクトリの要求を新しい Web サーバーにリダイレクトする必要があります。
次の例では、新しい Web サーバーのホスト名は newserver です。
別の Web サーバーにリダイレクトするための Apache mod_rewrite ソリューション
RewriteRule ^/(.+) http://newserver/$1 [R,L]
<!--NeedCopy-->
別のWebサーバーにリダイレクトするためのNetScaler ADCソリューション(方法1)
add responder action act1 redirect '"http://newserver"+HTTP.REQ.URL'
add responder policy pol1 'HTTP.REQ.URL.REGEX_MATCH(re#^/(.+)#)' act1
bind responder global pol1 100 END
<!--NeedCopy-->
別のWebサーバーにリダイレクトするためのNetScaler ADCソリューション(方法2)
add responder action act1 redirect '"http://newserver"+HTTP.REQ.URL'
add responder policy pol1 'HTTP.REQ.URL.LENGTH.GT(1)' act1
bind responder global pol1 100 END
<!--NeedCopy-->
構造化されたホームディレクトリの操作
通常、数千人のユーザーがいるサイトには、構造化されたホームディレクトリのレイアウトがあります。たとえば、各ホームディレクトリは、ユーザー名の最初の文字を使用して名前が付けられたサブディレクトリの下に配置できます。たとえば、jsmith のホームディレクトリ (/~jsmith/anypath) は /home/j/smith/.www/anypath、rvalveti (/~rvalveti/anypath) のホームディレクトリは /home/r/rvalveti/.www/anypath になります。
次の例では、要求をホームディレクトリにリダイレクトします。
構造化ホームディレクトリ用の Apache mod_rewrite ソリューション
RewriteRule ^/~(([a-z])[a-z0-9]+)(.*) /home/$2/$1/.www$3
<!--NeedCopy-->
構造化ホームディレクトリ用のNetScaler ADCソリューション
構造化ホームディレクトリ用のNetScaler ADCソリューション
add rewrite action act1 replace 'HTTP.REQ.URL' '"/home/"+ HTTP.REQ.URL.AFTER_STR("~").PREFIX(1)+"/"+ HTTP.REQ.URL.AFTER_STR("~").BEFORE_STR("/")+"/.www"+HTTP.REQ.URL.SKIP('/',1)'
add rewrite policy pol1 'HTTP.REQ.URL.PATH.STARTSWITH("/~")' act1
bind rewrite global pol1 100
<!--NeedCopy-->
無効な URL を他の Web サーバにリダイレクトする
URL が有効でない場合は、別の Web サーバーにリダイレクトする必要があります。たとえば、URL で指定されたファイルが、その URL で指定されたサーバー上に存在しない場合は、別の Web サーバーにリダイレクトする必要があります。
Apache では、mod_rewrite を使用してこのチェックを実行できます。NetScaler ADCでは、HTTPコールアウトは、サーバー上でスクリプトを実行して、サーバー上のファイルをチェックできます。次のNetScaler ADC 例では、file_check.cgi というスクリプトがURLを処理し、この情報を使用してサーバー上のターゲットファイルが存在するかどうかを確認します。スクリプトはTRUEまたはFALSEを返し、NetScaler ADCはスクリプトが返す値を使用してポリシーを検証します。
リダイレクトの実行に加えて、NetScaler ADCはカスタムヘッダーを追加したり、2番目のNetScaler ADC 例のように、応答本文にテキストを追加したりできます。
URLが間違っている場合のリダイレクトのためのApache mod_rewriteソリューション
RewriteCond /your/docroot/%{REQUEST_FILENAME} !-f
RewriteRule ^(.+) http://webserverB.com/$1 [R]
<!--NeedCopy-->
URLが間違っている場合のリダイレクトのためのNetScaler ADCソリューション(方法1)
add HTTPCallout Call
set policy httpCallout Call -IPAddress 10.102.59.101 -port 80 -hostExpr '"10.102.59.101"' -returnType BOOL -ResultExpr 'HTTP.RES.BODY(100).CONTAINS("True")' -urlStemExpr '"/cgi-bin/file_check.cgi"' -parameters query=http.req.url.path -headers Name("ddd")
add responder action act1 redirect '"http://webserverB.com"+HTTP.REQ.URL'
add responder policy pol1 '!HTTP.REQ.HEADER("Name").EXISTS && !SYS.HTTP_CALLOUT(call)' act1
bind responder global pol1 100
<!--NeedCopy-->
URLが間違っている場合のリダイレクトのためのNetScaler ADCソリューション(方法2)
add HTTPCallout Call
set policy httpCallout Call -IPAddress 10.102.59.101 -port 80 -hostExpr '"10.102.59.101"' -returnType BOOL -ResultExpr 'HTTP.RES.BODY(100).CONTAINS("True")' -urlStemExpr '"/cgi-bin/file_check.cgi"' -parameters query=http.req.url.path -headers Name("ddd")
add responder action act1 respondwith '"HTTP/1.1 302 Moved Temporarily\r\nLocation: http://webserverB.com"+HTTP.REQ.URL+"\r\n\r\nHTTPCallout Used"'
add responder policy pol1 '!HTTP.REQ.HEADER("Name").EXISTS && !SYS.HTTP_CALLOUT(call)' act1
bind responder global pol1 100
<!--NeedCopy-->
時間に基づく URL の書き換え
時間に基づいてURLを書き換えることができます。次の例では、時刻に応じて example.html のリクエストを example.day.html または example.night.html に変更します。
時間に基づいてURLを書き換えるためのApache mod_rewriteソリューション
RewriteCond %{TIME_HOUR}%{TIME_MIN} >0700
RewriteCond %{TIME_HOUR}%{TIME_MIN} <1900
RewriteRule ^example.html$ example.day.html [L]
RewriteRule ^example.html$ example.night.html
<!--NeedCopy-->
時間に基づいてURLを書き換えるためのNetScaler ADCソリューション
add rewrite action act1 insert_before 'HTTP.REQ.URL.PATH.SUFFIX('.',0)' '"day."'
add rewrite action act2 insert_before 'HTTP.REQ.URL.PATH.SUFFIX('.',0)' '"night."'
add rewrite policy pol1 'SYS.TIME.WITHIN(LOCAL 07h 00m,LOCAL 18h 59m)' act1
add rewrite policy pol2 'true' act2
bind rewrite global pol1 101
bind rewrite global pol2 102
<!--NeedCopy-->
新しいファイル名にリダイレクトする (ユーザーには見えない)
Web ページの名前を変更しても、ページの名前が変更されたことをユーザーが認識できないようにしながら、下位互換性を保つために古い URL を引き続きサポートできます。
次の例の最初の 2 つでは、ベースディレクトリは /~quux/ です。3 番目の例は、任意のベースディレクトリと URL 内のクエリ文字列の存在に対応しています。
固定の場所でファイル名の変更を管理するための Apache mod_rewrite ソリューション
RewriteEngine on
RewriteBase /~quux/
RewriteRule ^foo.html$ bar.html
<!--NeedCopy-->
固定された場所でファイル名の変更を管理するためのNetScaler ADCソリューション
add rewrite action act1 replace 'HTTP.REQ.URL.AFTER_STR("/~quux").SUBSTR("foo.html")' '"bar.html"'
add rewrite policy pol1 'HTTP.REQ.URL.ENDSWITH("/~quux/foo.html")' act1
bind rewrite global pol1 100
<!--NeedCopy-->
URLの基本ディレクトリやクエリ文字列に関係なく、ファイル名の変更を管理するためのNetScaler ADCソリューション
add rewrite action act1 replace 'HTTP.REQ.URL.PATH.SUFFIX('/',0)' '"bar.html"'
Add rewrite policy pol1 'HTTP.REQ.URL.PATH.CONTAINS("foo.html")' act1
Bind rewrite global pol1 100
<!--NeedCopy-->
新しいファイル名 (ユーザーに表示される URL) へのリダイレクト
Web ページの名前を変更する場合は、下位互換性を維持するために古い URL を引き続きサポートし、ブラウザに表示される URL を変更してページの名前が変更されたことをユーザーが確認できるようにします。
次の例の最初の 2 つでは、ベースディレクトリが /~quux/ のときにリダイレクトが行われます。3 番目の例は、任意のベースディレクトリと URL 内のクエリ文字列の存在に対応しています。
ブラウザに表示されるファイル名とURLを変更するためのApache mod_rewriteソリューション
RewriteEngine on
RewriteBase /~quux/
RewriteRule ^old.html$ new.html [R]
<!--NeedCopy-->
ブラウザに表示されるファイル名とURLを変更するためのNetScaler ADCソリューション
add responder action act1 redirect 'HTTP.REQ.URL.BEFORE_STR("foo.html")+"new.html"'
add responder policy pol1 'HTTP.REQ.URL.ENDSWITH("/~quux/old.html")' act1
bind responder global pol1 100
<!--NeedCopy-->
URLのベースディレクトリまたはクエリ文字列に関係なく、ブラウザに表示されるファイル名とURLを変更するためのNetScaler ADCソリューション
add responder action act1 redirect 'HTTP.REQ.URL.PATH.BEFORE_STR("old.html")+"new.html"+HTTP.REQ.URL.AFTER_STR("old.html")'
add responder policy pol1 'HTTP.REQ.URL.PATH.CONTAINS("old.html")' act1
bind responder global pol1 100
<!--NeedCopy-->
ブラウザ依存のコンテンツに対応
ブラウザー固有の制限 (少なくとも重要なトップレベルページの場合) に対応するために、ブラウザーの種類とバージョンに制限を設定する必要がある場合があります。たとえば、最新の Netscape バリアントには最大バージョン、Lynx ブラウザーには最小バージョン、その他すべてのバージョンには平均的な機能バージョンを設定できます。
以下の例は HTTP ヘッダー「User-Agent」に作用し、このヘッダーが「Mozilla/3」で始まる場合、ページ MyPage.html が myPage.ns.html に書き換えられます。ブラウザが「Lynx」または「Mozilla」バージョン1または2の場合、URLはmyPage.20.htmlになる。他のすべてのブラウザはページ myPage.32.html を受け取ります。
ブラウザ固有の設定のための Apache mod_rewrite ソリューション
RewriteCond %{HTTP_USER_AGENT} ^Mozilla/3.*
RewriteRule ^MyPage.html$ MyPage.NS.html [L]
RewriteCond %{HTTP_USER_AGENT} ^Lynx/.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mozilla/[12].*
RewriteRule ^MyPage.html$ MyPage.20.html [L]
RewriteRule ^fMyPage.html$ MyPage.32.html [L]
NetScaler solution for browser-specific settings
add patset pat1
bind patset pat1 Mozilla/1
bind Patset pat1 Mozilla/2
bind patset pat1 Lynx
bind Patset pat1 Mozilla/3
add rewrite action act1 insert_before 'HTTP.REQ.URL.SUFFIX' '"NS."'
add rewrite action act2 insert_before 'HTTP.REQ.URL.SUFFIX' '"20."'
add rewrite action act3 insert_before 'HTTP.REQ.URL.SUFFIX' '"32."'
add rewrite policy pol1 'HTTP.REQ.HEADER("User-Agent").STARTSWITH_INDEX("pat1").EQ(4)' act1
add rewrite policy pol2 'HTTP.REQ.HEADER("User-Agent").STARTSWITH_INDEX("pat1").BETWEEN(1,3)' act2
add rewrite policy pol3 '!HTTP.REQ.HEADER("User-Agent").STARTSWITH_ANY("pat1")' act3
bind rewrite global pol1 101 END
bind rewrite global pol2 102 END
bind rewrite global pol3 103 END
<!--NeedCopy-->
ロボットによるアクセスをブロックする
ロボットが特定のディレクトリまたは一連のディレクトリからページを取得するのをブロックして、これらのディレクトリとの間のトラフィックを緩和することができます。特定の場所に基づいてアクセスを制限することも、User-Agent HTTP ヘッダーの情報に基づいてリクエストをブロックすることもできます。
次の例では、ブロックされるウェブロケーションは /~quux/foo/arc/、ブロックされるIPアドレスは 123.45.67.8 と 123.45.67.9、ロボットの名前は nameOfBadRobot です。
パスとユーザーエージェントヘッダーをブロックするための Apache mod_rewrite ソリューション
RewriteCond %{HTTP_USER_AGENT} ^NameOfBadRobot.*
RewriteCond %{REMOTE_ADDR} ^123.45.67.[8-9]$
RewriteRule ^/~quux/foo/arc/.+ - [F]
<!--NeedCopy-->
パスとユーザーエージェントヘッダーをブロックするためのNetScaler ADCソリューション
add responder action act1 respondwith '"HTTP/1.1 403 Forbidden\r\n\r\n"'
add responder policy pol1 'HTTP.REQ.HEADER("User_Agent").STARTSWITH("NameOfBadRobot")&&CLIENT.IP.SRC.EQ(123.45.67.8)&&CLIENT.IP.SRC.EQ(123.45.67.9) && HTTP.REQ.URL.STARTSWITH("/~quux/foo/arc")' act1
bind responder global pol1 100
<!--NeedCopy-->
インラインイメージへのアクセスをブロックする
ユーザーが頻繁に自分の使用のためにインライングラフィックをコピーするためにサーバーに行くと(そして不要なトラフィックを生成する)場合は、HTTP Refererヘッダーを送信するブラウザーの機能を制限することができます。
次の例では、グラフィックスは Exampleにあります。
インラインイメージへのアクセスをブロックするためのApache mod_rewriteソリューション
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://www.quux-corp.de/~quux/.\*$
RewriteRule .\*.gif$ - [F]
<!--NeedCopy-->
インラインイメージへのアクセスをブロックするためのNetScaler ADCソリューション
add patset pat1
bind patset pat1 .gif
bind patset pat1 .jpeg
add responder action act1 respondwith '"HTTP/1.1 403 Forbidden\r\n\r\n"'
add responder policy pol1 '!HTTP.REQ.HEADER("Referer").EQ("") && !HTTP.REQ.HEADER("Referer").STARTSWITH("http://www.quux-corp.de/~quux/")&&HTTP.REQ.URL.ENDSWITH_ANY("pat1")' act1
bind responder global pol1 100
<!--NeedCopy-->
拡張なしリンクの作成
ユーザーがサーバー側のアプリケーションまたはスクリプトの詳細を知らないようにするには、ファイル拡張子をユーザーに表示しないようにします。これを行うには、拡張なしのリンクをサポートしたい場合があります。この動作は、書き換えルールを使用してすべてのリクエストに拡張機能を追加するか、またはリクエストに拡張機能を選択的に追加することで実現できます。
次の例の最初の 2 つは、すべてのリクエスト URL に拡張機能を追加する方法を示しています。最後の例では、2 つのファイル拡張子のうちの 1 つが追加されています。最後の例では、mod_rewrite モジュールは Web サーバー上に存在するため、ファイル拡張子を簡単に見つけることができます。対照的に、NetScaler ADCは、Webサーバー上の要求されたファイルの拡張子をチェックするためにHTTPコールアウトを呼び出す必要があります。コールアウト応答に基づいて、NetScaler ADCはリクエストURLに.htmlまたは.php拡張子を追加します。
注
2番目のNetScaler ADC 例では、HTTPコールアウトを使用して、サーバー上でホストされている file_check.cgi という名前のスクリプトを照会します。このスクリプトは、コールアウトで提供される引数が有効なファイル名かどうかをチェックします。
すべてのリクエストに.php拡張子を追加するためのApache mod_rewriteソリューション
RewriteRule ^/?([a-z]+)$ $1.php [L]
<!--NeedCopy-->
すべてのリクエストに.php拡張子を追加するためのNetScaler ADCポリシー
add rewrite action act1 insert_after 'HTTP.REQ.URL' '".php"'
add rewrite policy pol1 'HTTP.REQ.URL.PATH.REGEX_MATCH(re#^/([a-z]+)$#)' act1
bind rewrite global pol1 100
<!--NeedCopy-->
リクエストに.htmlまたは.php拡張子を追加するためのApache mod_rewriteソリューション
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^/?([a-zA-Z0-9]+)$ $1.php [L]
RewriteCond %{REQUEST_FILENAME}.html –f
RewriteRule ^/?([a-zA-Z0-9]+)$ $1.html [L]
<!--NeedCopy-->
リクエストに.htmlまたは.php拡張子を追加するためのNetScaler ADCポリシー
add HTTPCallout Call_html
add HTTPCallout Call_php
set policy httpCallout Call_html -IPAddress 10.102.59.101 -port 80 -hostExpr '"10.102.59.101"' -returnType BOOL -ResultExpr 'HTTP.RES.BODY(100).CONTAINS("True")' -urlStemExpr '"/cgi-bin/file_check.cgi"' -parameters query=http.req.url+".html"
set policy httpCallout Call_php -IPAddress 10.102.59.101 -port 80 -hostExpr '"10.102.59.101"' -returnType BOOL -ResultExpr 'HTTP.RES.BODY(100).CONTAINS("True")' -urlStemExpr '"/cgi-bin/file_check.cgi"' -parameters query=http.req.url+".php"
add patset pat1
bind patset pat1 .html
bind patset pat1 .php
bind patset pat1 .asp
bind patset pat1 .cgi
add rewrite action act1 insert_after 'HTTP.REQ.URL.PATH' '".html"'
add rewrite action act2 insert_after "HTTP.REQ.URL.PATH" '".php"'
add rewrite policy pol1 '!HTTP.REQ.URL.CONTAINS_ANY("pat1") && SYS.HTTP_CALLOUT(Call_html)' act1
add rewrite policy pol2 '!HTTP.REQ.URL.CONTAINS_ANY("pat1") && SYS.HTTP_CALLOUT(Call_php)' act2
bind rewrite global pol1 100 END
bind rewrite global pol2 101 END
<!--NeedCopy-->
作業中の URI を新しい形式にリダイレクトする
次のような作業 URL のセットがあるとします。
/index.php?id=nnnn
<!--NeedCopy-->
これらの URL を /nnnn に変更し、検索エンジンがインデックスを新しい URI 形式に更新するようにするには、次の操作を行う必要があります。
- 古い URI を新しいものにリダイレクトして、検索エンジンがインデックスを更新できるようにします。
- 新しい URI を古い URI に書き直して、index.php スクリプトが正しく実行されるようにします。
これを実現するには、クエリ文字列にマーカーコードを挿入し(マーカーコードが訪問者に表示されないようにして)、index.php スクリプトのマーカーコードを削除します。
次の例では、クエリ文字列にマーカーが存在しない場合にのみ、古いリンクから新しい形式にリダイレクトします。新しい形式を使用するリンクが古い形式に書き直され、マーカーがクエリ文字列に追加されます。
Apache mod_rewriteソリューション
RewriteCond %{QUERY_STRING} !marker
RewriteCond %{QUERY_STRING} id=([-a-zA-Z0-9_+]+)
RewriteRule ^/?index.php$ %1? [R,L]
RewriteRule ^/?([-a-zA-Z0-9_+]+)$ index.php?marker&id=$1 [L]
NetScaler solution
add responder action act_redirect redirect 'HTTP.REQ.URL.PATH.BEFORE_STR("index.php")+HTTP.REQ.URL.QUERY.VALUE("id")'
add responder policy pol_redirect '!HTTP.REQ.URL.QUERY.CONTAINS("marker")&& HTTP.REQ.URL.QUERY.VALUE("id").REGEX_MATCH(re/[-a-zA-Z0-9_+]+/) && HTTP.REQ.URL.PATH.CONTAINS("index.php")' act_redirect
bind responder global pol_redirect 100 END
add rewrite action act1 replace 'HTTP.REQ.URL.PATH.SUFFIX('/',0)' '"index.phpmarker&id="+HTTP.REQ.URL.PATH.SUFFIX('/',0)'
add rewrite policy pol1 '!HTTP.REQ.URL.QUERY.CONTAINS("marker")' act1
bind rewrite global pol1 100 END
<!--NeedCopy-->
選択したページにセキュリティで保護されたサーバーが使用されていることの確認
選択したWebページにセキュリティで保護されたサーバーのみが使用されるようにするには、次のApache mod_rewriteコードまたはNetScaler ADC Responderポリシーを使用できます。
Apache mod_rewriteソリューション
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/?(page1|page2|page3|page4|page5)$ https://www.example.com/%1 [R,L]
<!--NeedCopy-->
正規表現を使用したNetScaler ADCソリューション
add responder action res_redirect redirect '"https://www.example.com"+HTTP.REQ.URL'
add responder policy pol_redirect '!CLIENT.TCP.DSTPORT.EQ(443)&&HTTP.REQ.URL.REGEX_MATCH(re/page[1-5]/)' res_redirect
bind responder global pol_redirect 100 END
<!--NeedCopy-->
パターンセットを使用するNetScaler ADCソリューション
add patset pat1
bind patset pat1 page1
bind patset pat1 page2
bind patset pat1 page3
bind patset pat1 page4
bind patset pat1 page5
add responder action res_redirect redirect '"https://www.example.com"+HTTP.REQ.URL'
add responder policy pol_redirect '!CLIENT.TCP.DSTPORT.EQ(443)&&HTTP.REQ.URL.CONTAINS_ANY("pat1")' res_redirect
bind responder global pol_redirect 100 END
<!--NeedCopy-->
この記事の概要
- URL バリエーションを正規 URL に変換する
- URLを変換するためのApache mod_rewriteソリューション
- URLを変換するためのNetScaler ADCソリューション
- ホスト名のバリエーションを正規ホスト名に変換する
- 80 以外のポートで実行されているサイトに特定のホスト名を強制するための Apache mod_rewrite ソリューション
- ポート 80 で実行されているサイトに特定のホスト名を強制するための Apache mod_rewrite ソリューション
- 80以外のポートで実行されているサイトに特定のホスト名を強制するNetScaler ADCソリューション
- ポート80で実行されているサイトに特定のホスト名を強制するためのNetScaler ADCソリューション
- ドキュメントルートの移動
- ドキュメントルートを移動するための Apache mod_rewrite ソリューション
- ドキュメントルートを移動するためのNetScaler ADCソリューション
- ドキュメントルートを移動し、パス情報を要求に追加するためのNetScaler ADCソリューション
- ホームディレクトリを新しい Web サーバーに移動する
- 別の Web サーバーにリダイレクトするための Apache mod_rewrite ソリューション
- 別のWebサーバーにリダイレクトするためのNetScaler ADCソリューション(方法1)
- 別のWebサーバーにリダイレクトするためのNetScaler ADCソリューション(方法2)
- 構造化されたホームディレクトリの操作
- 構造化ホームディレクトリ用の Apache mod_rewrite ソリューション
- 構造化ホームディレクトリ用のNetScaler ADCソリューション
- 無効な URL を他の Web サーバにリダイレクトする
- URLが間違っている場合のリダイレクトのためのApache mod_rewriteソリューション
- URLが間違っている場合のリダイレクトのためのNetScaler ADCソリューション(方法1)
- URLが間違っている場合のリダイレクトのためのNetScaler ADCソリューション(方法2)
- 時間に基づく URL の書き換え
- 時間に基づいてURLを書き換えるためのApache mod_rewriteソリューション
- 時間に基づいてURLを書き換えるためのNetScaler ADCソリューション
- 新しいファイル名にリダイレクトする (ユーザーには見えない)
- 固定の場所でファイル名の変更を管理するための Apache mod_rewrite ソリューション
- 固定された場所でファイル名の変更を管理するためのNetScaler ADCソリューション
- URLの基本ディレクトリやクエリ文字列に関係なく、ファイル名の変更を管理するためのNetScaler ADCソリューション
- 新しいファイル名 (ユーザーに表示される URL) へのリダイレクト
- ブラウザに表示されるファイル名とURLを変更するためのApache mod_rewriteソリューション
- ブラウザに表示されるファイル名とURLを変更するためのNetScaler ADCソリューション
- URLのベースディレクトリまたはクエリ文字列に関係なく、ブラウザに表示されるファイル名とURLを変更するためのNetScaler ADCソリューション
- ブラウザ依存のコンテンツに対応
- ブラウザ固有の設定のための Apache mod_rewrite ソリューション
- ロボットによるアクセスをブロックする
- パスとユーザーエージェントヘッダーをブロックするための Apache mod_rewrite ソリューション
- パスとユーザーエージェントヘッダーをブロックするためのNetScaler ADCソリューション
- インラインイメージへのアクセスをブロックする
- インラインイメージへのアクセスをブロックするためのApache mod_rewriteソリューション
- インラインイメージへのアクセスをブロックするためのNetScaler ADCソリューション
- 拡張なしリンクの作成
- すべてのリクエストに.php拡張子を追加するためのApache mod_rewriteソリューション
- すべてのリクエストに.php拡張子を追加するためのNetScaler ADCポリシー
- リクエストに.htmlまたは.php拡張子を追加するためのApache mod_rewriteソリューション
- リクエストに.htmlまたは.php拡張子を追加するためのNetScaler ADCポリシー
- 作業中の URI を新しい形式にリダイレクトする
- Apache mod_rewriteソリューション
- 選択したページにセキュリティで保護されたサーバーが使用されていることの確認
- Apache mod_rewriteソリューション
- 正規表現を使用したNetScaler ADCソリューション
- パターンセットを使用するNetScaler ADCソリューション