$1 は、同じ行で使われている「正規表現の()で括った部分に、マッチした文字列」を参照するといった意味になります。, また、$2、$3、$4・・・と指定することもでき、これは「正規表現の()で括った部分」が複数存在する場合に使われます。, ・[R=301,L]・・・こちらは、RewriteRuleのオプションになります。 . HTTP_HOSTとは、ユーザーがリクエストを送ったホスト(ドメイン)になります。, ・^(viral-community\.com)(:80)?・・・^ と ? フラグが [L] なので、ルールはここで終了。後続処理は行われない, リクエストされたファイルが存在しない、かつ( AND )リクエストされたディレクトリが存在しない場合、 RewriteRule . ? と \ は正規表現で、viral-community.com はドメインです(. 要は、無条件で条件とマッチするという事になります。, ・http://●●●●●.com/$1・・・こちらは、リダイレクト先のURLになります。 /hoge/index.php [L] が実行される。, 「.」は正規表現で、任意の 1 文字を意味する mod_rewrite は Apache の機能であり、モジュールを組み込むことで利用できる。URL(ドメイン以下のパス)のリダイレクト、置き換えなどが行える。一般的な正規表現を利用して RewriteRule を書くことができる。 Apache2.x の場合は Apache インストール時の ./configureに --enable-so --enable-rewrite=sharedを付けて、その後 make する。Apache のバージョンによって書き方が多少異なる。Apache のインストールはApache・aprのインストール・設定をご覧ください。 その後、Apache の m… [ RewriteBase / ]と記述すると、どのディレクトリに .htaccess が置いてあってもドキュメントルートからのパスになる, %{変数名} を参照して、それが指定した条件パターンと一致していれば(または一致していなければ)、次の条件( RewriteRule )を実行する mod_rewriteはApacheのモジュールです。mod_rewriteを利用することでURLを書き換えやリダイレクトを指定することができます。. Apache のモジュールで、 URL の書き換え・リダイレクト処理のルールを設定するもの 「 .htaccess 」や「 httpd.conf 」という Apache 設定ファイルに記述する(ここでは「 .htaccess 」への記述方法を解説) 記述にはルールがあり、書き方を間違えると 500 エラーが発生する この時、Windows環境では、「.htaccess」というネーミングでファイル作成ができないので、「●●●.htaccess」というファイルを作成します(後で、名前は「.htaccess」へ変更します), エディタで開けたら、 次は、「Mod_Rewrite」を用いたリダイレクト設定を、記述していきます。, RewriteEngine on 「実体がないURL」の「すべてを」という条件はかなり対象が広いので、これが一連のリライト処理の初めの方に指定されると、本来処理してほしいルールセットに行きつくまでに処理が停止されて、意図した結果が得られない、ということが起こります。, パラメータ付きの動的なURLを静的化するため、次のようなルールセットを用意したとします。, この場合「ファイルやディレクトリの実体がないURLの場合は」という書き換えの条件はルーティングの設定と同じで、違いは、対象が「リクエストされたパスがproducts/detail-**で始まる」場合に限定されているところです。ルーティングの設定は「全て.」が対象なので、より詳細度の高いこのルールセットが上位にないとルールは実行されません。, 何らかの理由で、特定のURLに対し強制的にステータスコード404を返すため、次のようなルールセットを用意したとします。, この場合も同様で、強制的に404を返したいURLは実体がないはずです。よってこれよりルーティング用の設定が先にある場合、そちらで書き換えが処理されてしまうので、このルールセットが実行されることはずっとないのです。, 「実体がないURL」の「すべて」より緩い条件でURLの書き換えが必要になるケースはありません。なのでルーティング用の設定は、mod_rewriteブロックの一番最後に記述するようにしましょう!, 既にWordPressが使用されているサイトに手を加える場合など、ついついルーティングの設定より後に追記する形でmod_rewriteのルールセットを追加して「動かない!」ってなっているのを見かけたり、「URLの正規化や静的化がうまくいってないからちょっと見て欲しい」と言われて覗くと、同様になっているケースがよくあるので、「おや?」と思ったら確認してみてください。. Copyright © GRANFAIRS inc. All Rights Reserved. の正規表現によって、(:80)はあってもなくても良いということになります(下記、どちらでも良いということです), ・viral-community.com また、(:80)は、ポート80番の事です(HTTPでの通信は80番ポートを使っているため、このように指定されています) 文字コード UTF-8 ( BOM 無し) [NC] この記述がない場合は、 .htaccess が置いてあるディレクトリが指定される になります。, ・%{HTTP_HOST}・・・{HTTP_HOST}は、環境変数になります({}で記載されるものは、全て環境変数になります) mod_rewrite とは. 要は、サイトのお引越しですね。, この場合、ユーザーや検索エンジン(クローラー)が、引っ越し前のサイトへ訪れた時の対策として、新しいサイトへのリダイレクトを設定しておく必要があります(「クローラー」については、こちらで解説しています→クローラーとは?「Googlebot」にクローリングさせたい場合とさせたくない場合の対処法), ※検索エンジン(クローラー)を対象に入れているのは、引っ越し前のサイトに対して検索エンジンからの評価(SEO的な評価)がされている場合に、その評価を新しいサイトへ引き継ぐことを理由としているためです。, 特に、引っ越し前のサイトがいくつかの「検索キーワード」で上位表示されているなど、検索エンジンからの評価が高かった場合は、必ず新しいサイトへリダイレクト設定しておきましょう。, また、ドメインの変更じゃなく、サイト内での「URLの変更を伴う構造の変更」をする場合も注意が必要です。, このような場合も、変更前のディレクトリを削除するのではなく、保持しておいて、かつ変更後のディレクトリへリダイレクト設定する事をオススメします(特に、検索エンジンからの評価が高い場合), サイト内に、コンテンツ内容は一緒なのに、複数のページが存在している場合、どのページがオリジナルのページなのかを明確にしておく必要があります。, なぜなら、コンテンツが重複しているにも関わらず、ページURLが複数あるので、その分「検索エンジンからの評価」が分散されてしまうからです。, ・http://www.viral-community.com HTTP/2やLet's Encryptを使っていると、mod_rewiteで設定すると便利になる場面がたくさんあります。 そこで、mod_rewriteの設定例を紹介していきたいと思います。 これで、設定は完了なので、ちゃんと「リダイレクト」されているかの確認を行ってください。, ※今回、当記事を作成するうえで参考にさせていただいたサイト→dawgsdk.org:mod_rewriteリファレンス, クローラーとは?「Googlebot」にクローリングさせたい場合とさせたくない場合の対処法, canonical(カノニカル)とは?「link rel=”canonical”」タグの使い方をまとめてみた, CSRF(クロスサイト・リクエスト・フォージェリ)とは?その仕組みと対策方法について, Chromeで閲覧サイトのCookie情報を確認する方法と、編集・削除・追加する方法も, curlコマンドの使い方 ~GET、POST、REST(json)の確認と、windowsでの利用手順, 「Advanced REST client」の使い方まとめ ~GoogleChromeの拡張ツール, WordPress(ワードプレス)のseo対策で、おすすめのプラグイン、テーマ・テンプレートと、やっておくべ設定, ブランディングの意味とは?企業(会社)や自分(セルフ)のブランドイメージ戦略(手法)は、ブログやデザインが重要, インバウンド(inbound)マーケティングとは?ソーシャルメディア活用など、BtoBの会社(企業)が知るべきWeb事例, WordPressとは?ワードプレスのインストール方法・使い方と、オススメの無料テーマ(テンプレート)・プラグイン紹介, メルマガ(メールマガジン配信)の開封率を上げるテンプレート素材(無料・HTML版)の作成(作り方)と、文章の書き方とは, コンテンツ(インバウンド)マーケティングとは?seoとも相性の良い「最新webマーケティング」のセミナー内容について, Web(ネット)マーケティングとは?ウェブコンサルティングのプロが、セミナー(講座)で言った、企業ブログの運営手法, ランディングページとは?landing pageの作り方(制作手順)と、LPO対策で重要な8つのポイントをまとめてみた, ネオヒルズ族とは?ネオヒルズ族の稼ぎ方で問題になっている点や逮捕事例についてまとめてみた, キャッチコピーとは?読者の注目を一瞬で惹きつけるキャッチコピーの作り方をまとめてみた, 文章の書き方で4つのポイントを守ったら、1記事で1日500人以上の方に読まれるようになった, Google対策に必須!ウェブマスターツール(WebMasterTool)へのサイト登録と基本的な使い方, ハッキング対策まとめ!自分のサイトを守るためにやっておかなければならない10のこと, 正規表現を利用した柔軟な条件指定をおこなえる(自由度の高い、URLのパス部分の記述ができる). mod_rewriteの設定例. [/app/index.html]とするとそのまま、何も付加されない。, パターンとのマッチング方法は、リクエストされた URL から、 .htaccess が置いてあるディレクトリまでのパス(最後のスラッシュまで)を除いたものが、パターンと比較される。 例えば、 [test] というディレクトリに .htaccess があって、 [http://hoge.com/test/abc.php] でリクエストがあった場合、 [abc.php] がパターンと比較される。, 「^」は正規表現で、行頭を意味する 「 .htaccess 」や「 httpd.conf 」という Apache 設定ファイルに記述する(ここでは「 .htaccess 」への記述方法を解説) WordPressやその他のCMS、フレームワークを採用している時に.htaccessに記述したmod_rewriteが効いてくれなくて、URLの書き換えができない…そんな時、フレームワークに採用されている「ルーティング機能」のためのルールセットと、独自のルールセットの順番を入れ替えてみるとサクッと解決することがあります。, WordPressだけでなく多くのフレームワークには、リクエストされたURLに対象となる実体(Webページや画像など)が存在し⁠ない場合⁠に、システム本体に要求されたURLであると認識し、リクエストされたURLの解析を行って適切な処理を実行する機能があります。, この後半「2」の機能が「URLルーティング」で、WordPressでは/index.phpが「URLルーター」としてリクエストされたURLを解析し、適切なコントローラーを呼び出すことで処理が実行されページが表示される、という仕組みになっています。, で、前半「1」の「リクエストされたURLに対象となる実体が存在し⁠ない場合⁠に」そのルーターにリクエストを集める役割を担っているのが.htaccessに書かれたルーティング用の設定=mod_rewriteの次のルールセットです。, 5行目は/index.phpが直接呼ばれた場合の処理で、何もせずリライトを停止させます。 *)・・・こちらの表記は、(カッコ含め)すべて正規表現になります。 mod_rewriteの初期設定とログの表示方法. Posted by 867 on May 9th, 2017. 記述にはルールがあり、書き方を間違えると 500 エラーが発生する, ルール ・viral-community.com:80, ※正規表現についてはこちらが参考になります→サルにもわかる正規表現入門(「その一」から「その四」まであります), ・[NC]・・・RewriteCondのオプションになります。[NC]は、大文字小文字を意識しない(どちらでも良い)条件とするオプションとなります([]で記載されるものは、全てオプションとなります), これらを総合すると、ユーザーがリクエストを送ったホスト(ドメイン)が、「viral-community.com」だった場合、条件とマッチするという事になります。, 「RewriteRule」:URL変更(リダイレクト)を行うルールの定義文になります。, ユーザーからリクエストのあったURLが、条件に指定しているURLに一致した場合、変更先のURLへ変更がおこなわれ、リダイレクトされます。, 構文としては、「RewriteRule A B 」となり、ユーザーからリクエストのあったURLが「A」であれば、「B」のURLへリダイレクトされます。, RewriteRule ^(. ・https://viral-community.com, この二つは、コンテンツ内容は全く一緒なのに、URLが違っているため、検索エンジンからの評価は、二つに分散されてしまいます。, なので、分散されているだけ評価は低くなり、結果的に上位表示されにくい状態となっているわけです。, そこで、重複コンテンツがある場合は、オリジナルのページを決めて、「このページがオリジナルですよ」と検索エンジンに対して明確化してあげる必要があります。, そのための一つの方法が、「リダイレクト」になります(解決方法自体はいくつかあって、詳しくはこちらにまとめています→正規化とは?サイトのページURLを正規化する必要性と方法についてまとめてみた), 実は、「Mod_Rewrite」を利用しなくても、Apacheのデフォルトで用意されている機能や、「PHP」によって、リダイレクトをすることは可能です。, ※「Mod_Rewrite」を利用せずに、リダイレクトをおこなう方法に関してはこちらで解説しています→「301リダイレクトについて、必要性と設定手順をまとめてみた」, ですが、「Mod_Rewrite」を利用した方が効率的にリダイレクト設定できるという場合が、往々にしてあるので、下記に「Mod_Rewrite」の特徴をまとめました。, 上述している通り、「Mod_Rewrite」はApache上で機能するものなので、前提条件としてWebサーバーに「Apache」を利用している必要があります。, また、具体的な設定の話しになりますが、「Mod_Rewrite」は、「.htaccess」というファイルに記述することで機能させることができます。, ※レンタルサーバーを利用している場合は、ほとんどのサーバーがWebサーバーに「Apache」を採用していますし、「.htaccess」の利用も許可されているので、心配する事はないでしょう(レンタルサーバーについては、こちらで解説しています→レンタルサーバーを選定する際の9つの軸で、3つのおすすめサーバーを比較してみる), 当章では、上記条件を満たしている事を前提に、「.htaccess」への記述例を交えて、「Mod_Rewrite」を用いたリダイレクトの設定手順を解説していきます。, では、まず「.htaccess」を作成します。 Mod_Rewriteとは・・・Webサーバーである「Apache(アパッチ)」上で利用することができる機能です。, 機能内容を簡単にいえば、ユーザー(又は検索エンジン)からのリクエストにあるURL情報を、変更し「リダイレクト」する事ができます。, 「Aさん」というユーザーが、当サイト(https://viral-community.com)へアクセスするとします。, 「https://viral-community.com のページヘ、アクセスしたいよ~」とリクエストを送ります。, もし、この時「Mod_Rewrite」が機能していれば、このリクエストのURL情報:https://viral-community.com を、別のURL「http://●●●●●.com」へ変更し、このURLへリダイレクトします。, この結果、「Aさん」は強制的に「http://●●●●●.com」にアクセスすることになるのです。, 今回の記事では、この「Mod_Rewrite」の特徴や、利用シーン。また利用手順について解説していきます。, 上述している通り、「Mod_Rewrite」は、ユーザー(検索エンジン)からリクエストを受けた際に、別のサイト(ページ)へリダイレクトする機能になります。, サイト管理者が「Mod_Rewrite」を利用するシーンは主に下記二点になるかと思います。, 「サイトのドメインを移転する or サイト内の構造を変更する(URLに関わる部分)場合」, 利用シーンとして最も多いのは、サイトのドメインを移転する場合だと思います。 RewriteRule の前に書く, リクエスト URL とパターンがマッチすれば、置換対象に置き換えられる *) http://●●●●●.com/$1 [R=301,L], 上記で言えば、「A」にあたるのが ^(. よって、 [index.php] でリクエストが来たら、そのまま [index.php] が呼び出される この場合、「.」は「どんなリクエストでも」という解釈となり、リクエストが存在するファイルやディレクトリではない場合、全て [/hoge/index.php] に置き換わる(内部転送), ちなみに、 [RewriteBase /hoge/] としているが、 [RewriteRule . 最終行には空行を入れる, mod_rewrite が利用できない場合、エラーが発生するので、if 文で mod_rewrite が使えるなら「On」という記述を書く, 「リダイレクト先」のベース URL を設定する。(リダイレクト元の URL とはなんら関係ないことに注意) RewriteCond %{HTTP_HOST} ^(viral-community\.com)(:80)? RewriteRule ^(. *)」は、どのようなURLでもOK!ということになります。 上述している通り、「Mod_Rewrite」は、ユーザー(検索エンジン)からリクエストを受けた際に、別のサイト(ページ)へリダイレクトする機能になります。 サイト管理者が「Mod_Rewrite」を利用するシーンは主に下記二点になるかと思います。 1. mod_rewriteは指定順が大事。WordPressなどのルーティング設定に注意. ルールを連続して処理する。1のルールを通過後、2のルール、3のルール…とチェーンしていく, >ターゲットファイルのMIMEタイプを、強制的に指定したMIMEタイプに置き換える. *) http://●●●●●.com/$1 [R=301,L], 上記の意味としては、「viral-community.com」ドメインにアクセスしたら、「●●●●●.com」ドメインへ、リダイレクトするといった意味になります。, 「RewriteCond」:次の「RewriteRule」を実行するかどうかの条件文になります, 要は、「RewriteCond」の条件を通れば、次の「RewriteRule」は実行され、通らなければ実行はされません。, 構文としては、「RewriteCond A B 」となり、A と B がマッチすれば、次の「RewriteRule」が実行されます。, RewriteCond %{HTTP_HOST} ^(viral-community\.com)(:80)? Nunjucks (JSテンプレートエンジン) とGulpでHTML開発環境を効率化, 慣れてきたらコミットをまとめてPull Requestしよう(git merge –squash), WordPressのリニューアルとSSL化を同時に実施する際のURL設計とリダイレクト:運営堂サイトリニューアル (3), リクエストされたURLに対象となる実体(Webページや画像など)が存在し⁠ない場合⁠に、. 6行目7行目が「該当するファイルやディレクトリの実体がない場合は」という書き換えの条件で、該当する場合その下8行目「全て.を/index.phpに書き換える」という処理が実行されます。, つまり、実体のないURLへのリクエストは、すべてルートにある/index.phpに渡すと指定しているのです。(これが「WordPressはデフォルトだと404ページが表示されない」理由です), ルーティング用のルールセットはRewriteRuleのフラグに[L]が指定されているので、条件にマッチして書き換え処理が実行された場合、それより後のルールセットはスルーされます。 サイト引っ越し時の URL の書き換えや、リダイレクトさせたい時に使うのが「 mod_rewrite モジュール」。, WordPress とか XAMPP の「 .htaccess 」ファイルに書いてあるやつで、たまに使うけど、「 RewriteRule 」とか「 RewriteCond 」とか、よくわからないままだったので書かれている意味を調べた。, Apache のモジュールで、 URL の書き換え・リダイレクト処理のルールを設定するもの 今回は、二つ「R=301」と「L」が指定されています。 また、301を指定しない場合(「R」のみの場合)は、302リダイレクトとなります。, 次に「L」ですが、こちらは ”LastのL” となり、(「L」が指定されている)RewriteRuleの条件にマッチした場合、以降のRewriteRuleを処理しない事を意味します。, 上述している「RewriteRule」を総合すると、ユーザーからのリクエストがあった場合、無条件に「●●●●●.com」ドメインへ301リダイレクトをする。といった意味になります。, 「正規表現」を知らなかった人は、ハードルが高いですが、上記を理解する事ができれば、ある程度の基本的な構文(記述)に関しては理解できるでしょう。, シチュエーション(状況)や、用途(やりたい事)ごとの記述例を下記にまとめているので確認しておいてください。, ・301リダイレクトについて:「mod_Rewrite」が利用できる場合の設定手順, では、次のステップですが、「●●●.htaccess」への記載が終わったら、内容を保存して、「htaccess」ファイルを配置すべき場所(上記リンク先を参考)へ、FFFTPなどの「FTPツール」を利用してアップロードしてください(下図参考), アップロードできたら、「●●●.htaccess」の ”●●●”を消して、ファイル名を「.htaccess」に変更してください(下図参考), 以上です。 「$」は正規表現で、行末を意味する 「サイトのドメインを移転する or サイト内の構造を変更する(URLに関わる部分)場合」利用シーンとして最も多いのは、サイトのドメインを移転する場合だと思います。 要は、サ … 例えば、PHPでパラメータを追加して動的なURLを作成している場合、URLは以下のようになります。 上から順に処理されていく(記述する順番に注意), 置換対象には、リダイレクト先などを書く。置換対象に相対パス(スラッシュなし)を書くと、 RewriteBase がパスとなる。 また、% は環境変数の前に必ず付きます。 * の組み合わせはよく使われ、”任意文字の連続” といった意味になります。, なので、「^(. Amazon Linux 2 および Amazon Linux で、タイムゾーン ... AWS の EC2 インスタンスの複製は、 AMI ( Amazon Machi ... PC を閉じたらスリープになって、開けると画面ロックがかかっていた職場の Mac ... EC2上のAmazon Linuxにあるファイルを、Cyberduckで更新する ... ホスティングサービスを行う Liquid Web でサイトを構築する方法。今回は ... WordPress Luxeritas Theme is provided by "Thought is free". *) で、「B」にあたるのが、http://●●●●●.com/$1 になります。, ・^(. /hoge/index.php [L]] の置換対象( /hoge/index.php )の頭にスラッシュ( / )があるので、 RewriteBase のパスは適用されない( hoge/hoge/index.php とはならない).