今回は.htaccessを使って動的URLを静的URLに変換する方法について説明します。
動的URLと静的URL
まずは動的URLと静的URLとは何かについて説明します。
動的URL
動的URLとはたとえば以下のようなURLとなります。
https://tadworks.jp/result.php?keyword=中華料理&address=東京
検索結果ページのURLなどでよく見かけるかと思いますが、これはGETパラメータ(クエリパラメータ)と呼ばれるものでURLに可変の情報を付加してページに伝えることができます。
この仕組みによってひとつのページに可変の情報を渡して、その情報によって表示する内容を変えるといったことが可能になります。
静的URL
一方、静的URLというのは以下のようなURLとなります。
https://tadworks.jp/search/中華料理/東京/
一般的なディレクトリ型のURL構造ですね。
動的URLを静的URLに変換する
ここまでで動的URLと静的URLの違いについてはご理解頂けたものと思いますが、実は動的URLを静的URLに変換する方法というのがあります。
なぜわざわざこんなことをするのか不思議に思われるかと思いますが、こういった変換を行うには以下のようなメリットがあると考えられます。
変換のメリット
- ・SEOに有利である
- ・メール本文やSNSにURLを記載するときに切れない
- ・URLを覚えやすい
- ・パラメータ名を隠蔽できる
SEO対策における有効性は実際のところわかりませんが、その他メリットもあるため基本的に重要なページは静的URLへの変換を行うようにしています。
ワードプレス等のCMS、また、CakePHP等のフレームワークでは実はこの変換がされています。
.htaccessによる動的URL・静的URL変換方法
動的URLから静的URLへの変換は、.htaccessファイルを使って実現できます。先ほどのURL事例に従って記述例を紹介します。
RewriteEngine on
RewriteBase /
RewriteRule ^search/(.*)/(.*)/$ results.php?keyword=$1&address=$2 [QSA,L]
RewriteRule ^search/(.*)/(.*)$ results.php?keyword=$1&address=$2 [QSA,L]
上記記述をした.htaccessファイルをサイトのルートディレクトリに設置して完了となります。
.htaccess内のRewriteRuleルールの名称が重複すると正常に変換が行われないためネーミングには注意してください。