複数ドメイン管理でindex.htmlを省略リダイレクトする

掲載日
更新日

結論

httpd.conf等に以下を追加します。

<Directory "XXXX"> # XXXXに任意のリダイレクトさせたいディレクトリパス
     RewriteEngine On

     RewriteCond %{THE_REQUEST} ^.*/index.html
     RewriteRule ^(.*)index.html$ http://%{HTTP_HOST}/$1 [R=301,L]
 </Directory>

やりたかったこと

「index.htmlにアクセスがあった際に、index.html無のURLにリダイレクトしたい」という、よくある設定をしたいことがありました。

ググると出て来るのは以下のような設定で、ドメインを任意のものに変更すれば、サイトが一つであったり、複数あっても今後追加予定等なければ以下で事足りると思います。

RewriteEngine on

RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://example.com/$1 [R=301,L] # example.comを任意のドメインに変更

今回自分が類似の設定をやりたかったサイトでは、以下の条件がありました。

  • 複数のドメインを持っている。
  • サイトは全て同じサーバー上にあり、CMSで複数サイトを管理している(吐き出されるファイルは同じディレクトリ配下で管理できる。)
  • 今後もサイト(ドメイン)が増える可能性がある。
  • 新たにアクセスの解析ツールを導入したが、index.htmlありのURLと無のURLが別々の集計がされている。
  • よって、全てのサイトでindex.html付きアクセスはindex.html無URLへのリダイレクトとしたい。

 

もちろんすべてのドメインで同じ記述を入れてもいいのですが、今後追加の際に絶対に「設定を忘れる→アクセス解析ツールを見た顧客の指摘を受けてリダイレクト設定を入れる」というなんともスマートじゃない事態になるのは目に見えているので、
「特定ディレクトリ配下で、アクセスしたドメインと同じドメインにリダイレクトする」みたいな置換が出来てほしいと思い、ApacheのRewriteで使える変数について調べました。

結果、HTTP_HOSTという変数があることが分かったので結論の通り、以下の書き方でサブドメインや別ドメイン対応のリダイレクトが出来るようになりました。

<Directory "XXXX"> # XXXXに任意のリダイレクトさせたいディレクトリパス
    RewriteEngine On

    RewriteCond %{THE_REQUEST} ^.*/index.html
    RewriteRule ^(.*)index.html$ http://%{HTTP_HOST}/$1 [R=301,L]
 </Directory>

色々限定的な条件の時以外不要な記述だとは思いますが、備忘録として。

参考

  • Expressions in Apache HTTP Server
     使用出来る変数の一覧が表でまとまっている公式のドキュメント。
    「Variables」配下から見られます。
    • BlueSkyで共有する
    • Hatenaで共有する
記事の作成者のW.Aのアイコン

この記事を書いた人

W.A
茨城県在住Webエンジニアです。 PHP、PostgreSQL、Linuxなどを業務で使用しています。 趣味ではGoやNuxt、Flutterをやってます。
  • GitHubのリンク

Comment

関連記事

  • SSLエラーで一部の環境のみ表示されない原因と対応のサムネイル画像

    SSLエラーで一部の環境のみ表示されない原因と対応

    掲載

    アクセスする環境(PC)によってサイトのSSL対応状況が異なっている(ブラウザの鍵マークが赤くなるPCと赤くならないPCがある)トラブルの原因が「中間証明書の期限切れ」だった時の備忘録。opensslコマンドを使った調査方法をまとめました。

  • Windows11、Apacheでの自己証明書(オレオレ証明書)のやり方メモのサムネイル画像

    Windows11、Apacheでの自己証明書(オレオレ証明書)のやり方メモ

    掲載

    Windows+Apache環境で、Chromeブラウザで警告が出ない「独自SSL証明書(オレオレ証明書)」を作成・導入する手順を解説します。Service Workerやクリップボードへのコピーなど、HTTPSが必須となるローカル開発環境の構築に役立つ備忘録です。

  • Apache手動インストールしたらcertbot更新が大変だった話のサムネイル画像

    Apache手動インストールしたらcertbot更新が大変だった話

    掲載

    ApacheをAlmaLinux9に手動インストールしたところ、certbotで証明書を更新しようとすると「NoInstallationError」エラーが出ていたため、「httpdのパスを通す」「設定ファイルの場所を明示するもしくはシンボリックリンクを貼る」という対処方法をまとめた備忘録です。

check コピーしました!