特定のファイルのみベーシック認証をはずす(さくらのレンタルサーバー)


さくらのレンタルサーバー内で旧サイトから新サイトへ移行したときの話(プラン変更した)
旧サイトは閉鎖です。ただし解約しないでしばらく検証用や確認用に保存することに。
なので旧サイトにはさくらのレンタルサーバーで無料で使えるサブドメインをあてました。
旧サイト全体にはベーシック認証をかけました。

ここでひとつ困ったことが。
初期ドメインでのリンクが残っていた。
具体的には〇〇〇.sakura.ne.jp/test/test.pdf みたいな。
初期ドメインのリンクは
ベーシック認証ではじかれてしまいます。そのせいで新サイトへのリダイレクトもできないです。

どうしようと悩んでいたところ
初期ドメインのリンクはすべてPDFファイルであることに気が付きました。

結論

PDFファイルのみベーシック認証を外す。

前提

・サイト全体にベーシック認証がかかっている
・初期ドメインでのリンクはすべてPDFファイル
・ベーシック認証の記述はさくらのレンタルサーバーのファイルマネージャで作成 ※下記参照

すでにあるベーシック認証の一番下に以下の3行を追加するだけでPDFファイルのみベーシック認証が外れました。

<FilesMatch "\.pdf$">
  Satisfy Any
</FilesMatch>

解説

さくらのレンタルサーバーベーシック認証の解説は以前記事にしたのでそちらを参考にしてください。
https://qiita.com/shizuma/items/8616bbe3ebe8ab0b6ca1

ページ全体のベーシック認証+PDFファイルはベーシック認証しない
DirectoryIndex index.html index.htm index.shtml index.php index.cgi
Options -Indexes
AuthUserFile /home/〇〇〇/www/.htpasswd
AuthType Basic
AuthName "Web access"
Require valid-user
Satisfy all
Order deny,allow
##ここにPDFファイルを除外する設定を追加するのみ
<FilesMatch "\.pdf$">
  Satisfy Any
</FilesMatch>
RewriteEngine on
#リダイレクトしたい場合はここからリダイレクトの記述をする

 FileMatchの記述について

FileMatchの記述は環境により異なります。

<FilesMatch ".pdf$"> 末尾が.pdfで終わるファイルに対する命令を書きますよ 詳細
Satisfy Any ホストによる制御とユーザー認証による制御どちらか一方を満たせばよいということ。さくらのレンタルサーバーの場合、外国からのアクセスを制限しています。(ホストによる制御)ということは国内からのアクセスの場合ホストによる制御を満たしているということなので、どちらか一方を満たしているということになります。 満たしているのでアクセスできるつまり、ベーシック認証のダイアログがでないということです。 詳細
RewriteEngine on RewriteRuleでリダイレクト処理しますよと宣言する 詳細

※環境により
<FilesMatch ".pdf$">
Satisfy Any
</FilesMatch>
の記述はことなるかと思います。

学び
さくらのレンタルサーバーで初期ドメインを使うのはやめよう。