お問い合わせはコチラから

【apache】複数のファイル/ページを同じファイル/ページにリダイレクトする方法

サイト運営

サイトで公開していたpdfファイルに変更が入って置き換える際に、ファイル名を変更することがよくあります。

そのようなケースは古いpdfファイルにアクセスが来た時に最新のpdfファイルにリダイレクトする必要があります。

よくある書き方は、こうです。

RewriteRule ^/wp-content/uploads/oldfile.pdf /wp-content/uploads/newfile.pdf [R=301,L]

1度や2度ならば愚直に.htaccessに書いてもいいのですが、さすがに何度も改版が続くとこの書き方だと、修正量が多いなと疑問になりました。

RewriteRule ^/wp-content/uploads/oldfile1.pdf /wp-content/uploads/newfile.pdf [R=301,L]
RewriteRule ^/wp-content/uploads/oldfile2.pdf /wp-content/uploads/newfile.pdf [R=301,L]
RewriteRule ^/wp-content/uploads/oldfile3.pdf /wp-content/uploads/newfile.pdf [R=301,L]
RewriteRule ^/wp-content/uploads/oldfile4.pdf /wp-content/uploads/newfile.pdf [R=301,L]

というのも、newfile.pdfの名前は毎回変わるので過去に書いた部分を書き換える必要があります。

RewriteCondを使ってスマートに解決したい

改版があるたびにnewfile.pdfが書かれている行が増えていくので保守するのが大変な理由です。

mod_rewriteを使うなら、RewirteCondを使ってスマートに解決できるはずです。

newfile.pdfが1回だけしか出てこないようにRewriteCondを使って条件判定しつつ、最後にRewirteRuleを使います。

次のように書いて、RewriteCondをOR条件でつなげていけばうまく動きます。

<IfModule mod_rewrite.c>
	RewriteEngine On
	RewriteBase /
  RewriteCond %{REQUEST_URI} ^?/wp-content/uploads/oldfile1.pdf [OR]
  RewriteCond %{REQUEST_URI} ^?/wp-content/uploads/oldfile2.pdf [OR]
  RewriteCond %{REQUEST_URI} ^?/wp-content/uploads/oldfile3.pdf [OR]
  RewriteCond %{REQUEST_URI} ^?/wp-content/uploads/oldfile4.pdf [OR]
  RewriteCond %{REQUEST_URI} ^?/wp-content/uploads/oldfile5.pdf
  RewriteRule ^(.*)$ /wp-content/uploads/newfile.pdf [R=301,L]
</IfModule>

RewriteCondをORでつなぐときは最後の行に[OR]をつけるとリダイレクトループになってしまうので注意します。

リダイレクトの動作を確認できるサイト

リダイレクトはデバッグするのが大変なので、リダイレクトループになると嫌になりますが、リダイレクトの動作確認に便利なサイトがあります。

まとめ

検索してコピペだけしていると、リダイレクトループが発生した時に解決できないだけでなく、効率の悪い書き方をしていることにも気が付きにくくなるなと思いました。

この記事を書いた人
ブーン

はるばる日本よりオランダ王国へやってまいりました。
自分の経験が少しでも参考になれば嬉しいです。
お問い合わせは、『こちら』からお願い致します。

\ブーンをフォロー/
スポンサーリンク
サイト運営
\シェアお願いします!/
\ブーンをフォロー/
こんな記事も読まれています

失敗しないレンタルサーバーランキング

mixhost

不正アクセスに強くて使いやすいおススメサーバー
\本サイトで利用中/
メリット①:自動ウィルス駆除対応
メリット②:サイトの表示速度が速い!
メリット③:転送量の上限が多い!
メリット④:自由にプラン変更ができ、アクセス増にも対応できる!
メリット⑤:バックアップデータが無料で復元できる!
メリット⑥:Wordpressが簡単にインストールできる!
メリット⑦:どのプランでも初期費用が無料!
メリット⑧:10日間の無料お試し期間と30日の返金保証!

Conoha Wing

国内Wordpress最速の最強サーバー
メリット①:圧倒的な表示速度
メリット②:レンタルサーバーと独自ドメインがセットでお得◎
メリット③:プラン変更はすべてのプランで自由自在
メリット④:一か月の利用転送量の制限が緩い(9TB~)
メリット⑤:WordPresサイトの移行が簡単

エックスサーバー

国内シェアNo1の安定性と実績が魅力。ALL SSDで死角なしの万能サーバー。
メリット①:サイトの表示速度が安定して速い!
メリット②:アクセス負荷に強くて安定性が高い!
メリット③:24時間365日の充実サポートで安心!電話サポートもあり!
メリット④:転送量が多い!
メリット⑤:自動バックアップ機能付き!
メリット⑥:WordPressが簡単にインストールできる!
メリット⑦:10日の無料お試し期間がある!

タイトルとURLをコピーしました