.htaccessでRewriteRuleを表示URLそのまま変えずに転送する


htaccessで動的URLなどを別のURLに書き換える場合に、アクセスしたURLをそのままにして表示だけを切り替える方法メモです。
ブラウザURLを転送させてしまうと話が変わってしまうので、アクセスしてきたURLはそのまま表示させておいて、中身だけをRewriteさせる方法です。
SEOの観点からもリダイレクトよりも書き換えの方が良い場合が多いので、便利に活用していきたいですね。

SPONSORED LINK

URLそのままのRewriteRule書き換え

表示URLをそのままに、URLの書き換えを行う時に以下の項目を確認してみましょう。
サーバーの設定によって動きが多少異なるので、注意しましょう。

RewriteとRedirectの違いは?

RewriteはURLの書き換えが発生しません。RedirectはURLの書き換えが発生します。SEO的な面でもまったく別の解釈になりますので、使い分ける場面を見極めて活用していきましょう。

RewriteでURL書き換え

では早速URLを書き換えてみます。

RewriteEngine on
RewriteRule ^hoge\.html$ view.html [L]

hoge.htmlへのアクセスはview.htmlが表示されますよっていう事です。

正規表現でRewriteRule

正規表現の括弧でグルーピングをして$1で後方参照してみましょう。

RewriteEngine on
RewriteRule ^/access/(.*)$ /rewrite/$1

さて、こうするとどうなるでしょう。
「/access/」以下へのアクセスは「/rewrite/」の中身が表示されます。外部的なURLを統一できたりと使い道も広いですね。

RewriteRuleに合わせて使える小技

1.RewriteRule xxx – [L]
フラグの前に – を付ける方法です。このハイフンはそのまま置換前のURLを代用しますよーという演算子です。つまり置換しないってことですね。

2.RewriteRule xxx [PT]
[PT]フラグを利用する方法です。URL書き換えの後に別のモジュールに繋ぎます。
書き換えURLに対して、Aliasディレクティブ、ScriptAliasディレクティブ、Redirectディレクティブなどを利用する場合に指定します。

3.RewriteRule xxx$ http://xxx.xxx [L]
このように書き換え先が絶対パスはNGになります。なぜならリライトでなくリダイレクトになってしまいます。レスポンスコードとしては302扱いになるようです。

4.RewriteRule xxx [L,QSA]
[QSA]フラグはクエリを引き継ぐことができるフラグです。「?id=hoge」をそのままで書き換えられるということですね。

まとめ

RewriteRuleはまだまだ色々なことができます。それ故に、これだ!という記述を学ぶにはちょっと難しさを感じることがあると思います。
それは実際に挙動を試しにくい設定だからだと思います。
フラグなどにしても、使ってみるとどうなるのか試してみるだけでも楽しめる幅は広がっていくと思いました。

今日も知識欲は止まらない。

関連トピック

Allow

.htaccessで特定ファイルのみ許可・拒否する方法

.htaccessファイルを利用して「特定のファイルだけ許可」もしくは「特定のファイルだけ拒否」する方法メモ。 例えば設定項目のファイ

Tablet

.htaccessでスマホをタブレット以外で振り分ける

.htaccessを使用してタブレット以外のスマホを振り分ける方法メモです。 タブレット端末は基本的にパソコン向けのページを表示させる

Open

.htaccessでMultiViewsから.phpの拡張子省略をする方法

拡張子を省略したり、拡張子なしでファイルにアクセスする方法メモです。 URLから拡張子を省けるので場合によってはSEO的に有利になるこ

dreamhost_sky

DreamHost Promo Code(プロモコード)最大割引クーポン&使い方まとめ

世界で一番安くなるプロモコードを作ってほしいとご依頼して頂きましたので、新規で割引最大のプロモコードをご用意しておきます。色々なサー

Time

海外サーバでの時差(タイムゾーン)を変更する方法

海外サーバのサーバ時間を変更する方法です。 タイムゾーンを設定をすることで日本時間に合わせることが可能なので、時間を表示するサイト

Sakura

さくらサーバーのMySQLをcronで自動バックアップする方法

さくらレンタルサーバーでmysqlのデータを自動でバックアップする為のcron設定方法メモです。 サーバー上ファイルのバックアップは常

公開日:2012/10/20