.htaccess活用法(6).htaccess(拡張子がhtaccessということで、ドットが必要です。ファイル名がないので最初戸惑いますが、こういうものだと思ってください。)が利用可能だと、
6.リダイレクト機能を利用するこのような場合、通常、メタタグを用いて、 <META HTTP-EQUIV="refresh" content="2;URL=http://www.example.com/newpage.html"> などとします。この例で言えば、「2秒後にhttp://www.example.com/newpage.html」にリダイレクトされることになります。多くの場合、これで十分なのですが、この方式だと、考えうる全てのHTMLファイルに対して、このメタタグを放り込んでやらなければならず、ファイルが多いと非常に面倒になります。 また、私が一度体験したケースでは、あるクライアントが、転送量オーバーで、レンタルサーバの事業者から文句を言われたというケースがありました。そこで、画像ファイルだけでも別サーバに移動しようとしたのですが、その画像ファイルのリンク元であるHTMLファイルは山ほどあり、それを書き換えるのは死ぬほど大変ということになりました。 実は、このようなケースでは、.htaccessを使ったリダイレクトで、よりスマートな解法があります。.htaccessでは、ディレクトリー構造そのままにリダイレクトさせることも可能です。 Redirect permanent /test/ http://www.shtml.jp/htaccess/ とすれば、http://www.shtml.jp/test/以下にあるファイルへのアクセスがあった場合には、リダイレクトされます。例えば、http://www.shtml.jp/test/basic.htmlへのアクセスは、http://www.shtml.jp/htaccess/basic.htmlへリダイレクトされます。 「Redirect permanent」の後ろに、リダイレクト元となる「絶対パス(Apacheの公式マニュアルではこのように書いていますが、この「絶対パス」という書き方は非常に紛らわしいと私は思います。「絶対パス」という用語は、rootディレクトリーからのフルパス/home/●●/public_html/〜を意味して使われていることもあれば、http://〜で始まる絶対URLとしての意味の場合もあります。このケースでは、絶対URLの中から「http://ドメイン名」を省略したパスになります。結局はDocumentRootから見たパスで、かつ「/(スラッシュ)」から始まるものになります。/home/●●/〜と書いても動きません。)」を書き、次に半角スペースを空けて、リダイレクト先を記します。もちろん、リダイレクト先は別のドメインのサーバであって構いません。
仮に、引数になっている「絶対パス」をrootディレクトリーからのフルパスだと解釈してしまうと(Basic認証のときはこの書き方をしましたね。Basic認証については、こちらの章を参照してください。)、 と書くと、仮に「http://www.shtml.jp/home/hogehoge/public_html/test/abc.txt」というファイルが実際にあれば、「http://www.shtml.jp/htaccess/abc.txt」に転送されますが、そうでなければ何も起こりません。決して「http://www.shtml.jp/test/abc.txt」へのアクセスが「http://www.shtml.jp/htaccess/abc.txt」に転送されることはありません。
ちゃんと、パターンマッチによるリダイレクトも可能になっています。「RedirectMatch」というものを使います。 などとします。ここで、正規表現を簡単に説明しますと、「括弧()」で囲まれた部分に入るものが$1に置き換えられます。例えば、「http://www.example.com/test/abc.gif」へのアクセスは「http://www.anotherserver.jp」と「$1 = /test/abc」と「.jpg」を合体させた「http://www.anotherserver.jp/test/abc.jpg」に転送されるという意味になります。
「ディレクティブ」とは「命令」の意味。
▼ Redirect ディレクティブ
▼ RedirectMatch ディレクティブ 次のページでは、存在しないURLにアクセスしたときに表示される「ページが見つかりません」のようなデフォルトのエラーメッセージをカスタマイズする方法を説明します。 |
|