2016-11-12

WordPressでmod_rewriteを使うときの記述位置

はじめに

サイトを運営していると、ページのURLが変わったりなどで301リダイレクトの設定をすることがあります。そんな時によく利用するのがmod_rewrite機能ですが、WordPressで作成されたサイトで上手くmod_rewriteが機能しない、という事象が最近ありました。今回はその概要についてメモしておきます。

mod_rewriteが効かない

WordPressをインストールすると、ルートディレクトリの直下に.htaccessファイルが置かれており、そこには<IfModule mod_rewrite.c>から</IfModule>で括られたリライトルールがデフォルトで記載されています。私が新たにリダイレクトのルールを記述するとき、このIfModuleで括られた範囲外の下に新たなルールを記述しました。そのあと、.htaccessファイルをアップロードし、該当のURLにアクセスしてみましたが、何故かリダイレクトされませんでした。

記述位置を変えてみる

記述する位置がダメなのかと思い、とりあえず位置を変えてみました。今度は、IfModuleタグ内の一番下に書いてみましたが、やっぱり動かない。思い切ってファイルの一番上に記述してみると、ようやくリライトルール通りの動きをしてくれるようになりました。

分かったこと

どうやら自分でルールを追記するときは、<IfModule mod_rewrite.c>と書かれている部分よりも上に追加しないと、上手く読み込んでくれないようです。また、RewriteEngineやRewriteBaseの記述が無くても、ルールのみでもちゃんと動作するようです。

ちなみにですが、デフォルトで記述されているIfModuleで括られた部分の内側に書いてしまうと、WordPressの設定の更新を行った際などに上書きされて消えてしまう事があるらしいので、どのみちそこに何かを記述するのは良くないみたですね。

さいごに

デフォルトのリライトルールには引っかかっていないはずなのですが、何故か一番下に書くと動作しないのはなんだかモヤモヤしました。同じような事象でお困りの方がいたら、とりあえず.htaccessの一番上に書いてみるのをお勧めします。



コメントする(※は必須項目です)













画像認証