2026年10月17日

2026年10月17日

mod_rewriteで動的URLを静的URLに変換する方法

はじめに

WebサイトのSEOやユーザビリティ向上のために、動的URLを静的URLへと変換することがしばしば行われます。特にCMSを使用している場合、デフォルトで生成されるような「/?page_id=1」のような動的URLではなく、「/about-us」といったより読みやすい静的URLが好ましいことが多々あります。

この記事では、Apache Webサーバーのmod_rewriteモジュールを用いてWordPressなどのCMSから生成された動的URLを静的URLへと変換する方法について解説します。また、その過程で発生しがちな問題やその解決策も紹介いたします。

症状・背景

このテーマが必要になる主な場面:

  • ユーザーがより読みやすいURLを好む場合
  • より良いSEOのために静的URLを利用したい場合
  • Webサイトの設計において、クリーンでユーザーフレンドリーなURLが求められる場合

手順・設定方法

ステップ1: mod_rewriteモジュールを有効化する

# Apacheサーバーでmod_rewriteを使用できるようにします。Apacheの設定ファイル(通常はhttpd.confやapache2.conf)を開きます。
vi /etc/httpd/conf/httpd.conf  # CentOSの場合

# 'LoadModule rewrite_module modules/mod_rewrite.so' の行のコメントを外す
# モジュールがすでに有効化されている場合は、このステップは不要です。

# Apacheを再起動して変更を適用します。
systemctl restart httpd

ステップ2: .htaccessファイルに静的URLへのルーティングルールを追加する

# WordPressのインストールディレクトリで.htaccessファイルを開きます。このファイルは通常、Webサーバーのドキュメントルート直下に存在します。
vi /var/www/html/wordpress/.htaccess  # 環境によってパスが異なる可能性があります。

# 次のような静的URLへの変換規則を追加します。
RewriteEngine On
RewriteBase /
RewriteRule ^about-us$ index.php?page_id=2 [L,QSA]

ステップ3: 複数のページやカテゴリに対応する

# 前述のルールを複数のページやカテゴリに適用します。例えば、'news'と'contact'というURLを持つページを動的に変換する場合:
RewriteRule ^news$ index.php?page_id=3 [L,QSA]
RewriteRule ^contact$ index.php?page_id=4 [L,QSA]

# 更に、複数のパターンに対応させるために正規表現を利用することができます。
RewriteRule ^category/(.*)$ index.php?cat=$1 [L,QSA]

ステップ4: リダイレクトと301ステータスコードを使用する

# 現在の動的URLから静的URLへの301リダイレクトを設定します。これにより、SEO効果が向上します。
RewriteCond %{THE_REQUEST} /index\.php\?page_id=2 [NC]
RewriteRule ^ index.php  [R=301,L]

# 既存の動的URL(/news?page_id=3)から静的URL(/category/news)へのリダイレクトを設定します。
RewriteCond %{THE_REQUEST} /index\.php\?page_id=3 [NC]
RewriteRule ^news$ /category/news [R=301,L]

注意事項

  • Apacheのmod_rewriteモジュールが無効な場合、上記の設定は機能しません。適切に有効化する必要があります。
  • .htaccessファイルの変更後、Apacheサーバーを再起動しないと新しいルールが適用されません。
  • セキュリティ上の問題から、.htaccessファイルへの書き込み権限は最小限に留めるべきです。また、必要以上の情報が漏洩しないようにするため、具体的なパスや情報を隠すことが推奨されます。
  • パフォーマンス面では、大量のルールを設定するとApacheサーバーへの負荷が高まります。適切に最適化することをお勧めします。

まとめ

1. mod_rewriteモジュールの有効化: Apacheで静的URLを使用するためには、まずmod_rewriteモジュールを有効にする必要があります。

2. .htaccessファイルへの追加: .htaccessファイルに必要なルーティング規則を追加し、動的なURLを静的なものへと変換します。

3. 複数のページやカテゴリへの対応: 複数のページやカテゴリに対応するためには、正規表現を使用して柔軟な設定を行います。

4. 301リダイレクト: SEO効果を高めるために、動的URLから静的URLへの301リダイレクトを設定します。

5. セキュリティとパフォーマンスの考慮: .htaccessファイルへのアクセス権限やルール数に注意することで、サーバーの安全性とパフォーマンスを維持できます。

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ
▲