ページのリダイレクトで特定のディレクトリのみを除外する記述方法

サーバーサイド

今回は、htaccessで指示を出す301リダイレクトの記述で特定のページ(ディレクトリ)のみを除外する方法を紹介致します。基本的にはコピペからの書き換えで非常に簡単に作業ができるので是非参考にしてみて下さい。

htaccessで除外指定

下記の記述で除外指定した部分以外は全て「https://exsample.com/page1.html/」にリダイレクトされます。

RewriteEngine On
RewriteBase /

#除外設定
RewriteCond %{REQUEST_URI} !(^/exsample.html)
RewriteCond %{REQUEST_URI} !(^/css)
RewriteCond %{REQUEST_URI} !(^/img)

#リダイレクト先
RewriteRule ^(.*)$  [R=301,L]
注意

コピペをする場合は必ず上記のシンタックスハイライターの記述から行って下さい。(htaccessでは半角スペースやスラッシュの位置が非常にシビアなため。)

解説

下記の記述でリクエストを「On」に。→「Off」に書き換えればこの指示は止まります。

RewriteEngine On
RewriteBase /

下記の記述では、全体リダイレクトの記述に対して各除外したいファイルorディレクトリに「!」を付けて否定の指示をしています。

#除外設定
RewriteCond %{REQUEST_URI} !(^/exsample.html)
RewriteCond %{REQUEST_URI} !(^/css)
RewriteCond %{REQUEST_URI} !(^/img)

注意

指定ページ(exsample.html)の部分のみを除外してしまうとそのページのCSSや画像ファイルなどが読み込まれず表示が崩れます。
そのため「CSS」「img」のファイル単位でも除外の指示をしましょう。他にも指定ページ(exsample.html)で読み込んでいるファイルがあるならそれも同じ様に除外指定します。

下記の記述で、設置ファイル全体にリダイレクトの指示を出しています。

#リダイレクト先
RewriteRule ^(.*)$ [R=301,L]

今回の記述は、除外指示も出しているのでドメイン直下の階層にhtaccessファイルを設置します。

ドメイン直下に置いた場合そのドメインに対して効くので、「https://exsample.com/page1.html/」の前に「どこから?」といった記述を書かなくてよくなります。


以上が「ページのリダイレクトで特定のディレクトリのみを除外する記述方法」でした。

サイトのリニューアル時などに特定のページのみはリダイレクトしたく無いといった場面などに使えるので是非活用してみて下さい。

失敗する場合は以下の記事を参考にして下さい。