さくらのレンタルサーバー　ベーシック認証　.htaccess初期値を調べてみた


サーバーが増えるごとに、増えるコピペ、使いまわし。
以前のこのサイトをもとに、新たに作ろうみたいなのりでしょうか。

特に .htaccess関係はこんな記述いらないでしょ、というようなものも、多数のこっていることが

例①：-そもそも、〇〇フォルダなどないのに、〇〇フォルダにリダイレクト設定がある-
例②：httpd.confでhttpsのリダイレクトを設定しているのに、.htaccessでもhttpsへのリダイレクトをしている

不必要な記述だけならまだしも、あのサイトの .htaccessをコピペしたけれど、さくらのレンタルサーバーでは動かない。これがこまります。
例：RewriteRule ^hoge https://yahoo.co.jp [R=301,L]
理由：RewriteRule 正規表現の開始位置が.htaccessとVertualHostで異なるため、VertualHostのRewriteRuleをさくらのレンタルサーバーの.htaccessにコピペしても、リダイレクトされない。

.htaccessコピペにスムーズに対応できるよう
さくらのレンタルサーバーベーシック認証の初期値を調べてみました。
**※ここでの初期値とは**
**ファイルマネージャーでパスワードによる制限をした場合をいいます。**
https://help.sakura.ad.jp/206207041/

※素人がなんとなく調べたました。でも実務では使えます。

```:さくらのレンタルサーバーベーシック認証パスワードによる制限
1 DirectoryIndex index.html index.htm index.shtml index.php index.cgi
2 Options -Indexes
3 AuthUserFile /home/test/www/test2.inuo55.jp/.htpasswd
4 AuthType Basic
5 AuthName "Web access"
6 Require valid-user
7 Satisfy all
8 Order deny,allow

```

###1　DirectoryIndex index.html index.htm index.shtml index.php index.cgi
トップページに表示させるファイルを index.htmlにする
index.htmlがないときは index.htm 
index.htmもないときは index.shtmlの順で表示されます。

※注) https://〇〇.com?id=aaa　のようにPHPでパラメーラの処理をしている場合に 
index.phpとindex.html両方あると、index.htmlが表示され、index.phpのパラメータの取得がうまくいかないということがあります。
そんなときは
DirectoryIndex index.php　index.html index.htm index.shtml  index.cgi
とindex.phpを先頭に持ってくればOK

###2 Options -Indexes
ファイルが存在しない場合、Not Foundと表示される
さくらのレンタルサーバーの初期値です。
初期値なのでいらない？と思いますが、これがないと動作しないプラグインもあるとのことで消さずにいます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/369082/f48b25d9-9075-71ad-03b8-158d63983fcf.png)

Options -Indexes ではなくて　Option Indexesにすると、ファイルが存在しない場合ファイルの一覧が表示されます。
開発中はこちらのほうが便利。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/369082/decaaf9a-4ce5-f1a7-1a5c-87136d3a3680.png)

さくらの公式サイト参考URL:https://help.sakura.ad.jp/206054622/#11

###3 AuthUserFile /home/〇〇/www/〇〇〇/.htpasswd
パスワードが書いてあるファイルの場所
**コピペしたとき必ず書き換えるのがこれ。**
注）同じサーバー内でコピペした場合、偶然にもそのファイルが存在する場合があります。
そうしたら、〇〇さんはログインできないはずなのに、ログインできるなぜ？てなことになります。

###4 AuthType Basic
ベーシック認証ですと宣言。ここはそのまま

###5 AuthName "Web access"
ひと昔前まではベーシック認証のダイアログに表示されて、メッセージのような感じだったのですが、最近は表示されなくなりました。
なのでこのままでOK

###6 Require valid-user
すべての有効なユーザーがリソースにアクセスできるということ
だれでもOKということですね。

Require Apache公式サイト
http://httpd.apache.org/docs/2.4/ja/mod/mod_authz_core.html#require
###7 Satisfy all
IPアドレスによる制限をみたし、かつ、ベーシック認証の正しいIDとパスワードを入力した場合にページが表示される

さくらのレンタルサーバーは初期値で外国IPアドレスを制限しています。
ということは国内からのアクセスは　
IPアドレスの制限をみたしています。
で、ベーシック認証の正しいIDとパスワードを入力すると、ページが表示されるということです。

ちなみに
**Satisfy anyにすると**
IPアドレスによる制限とベーシック認証のIDとパスワードどちらかを満たせばよいということになります。
なので、さくらのレンタルサーバーの場合、国内からアクセスするとその時点でIPアドレスによる制限を満たしているので、
ベーシック認証のダイアログは表示されなくなります。
これもコピペで動かないの原因の１つです。

Satisfy Apache公式サイト：
https://httpd.apache.org/docs/2.4/ja/mod/mod_access_compat.html#satisfy

###8 Order deny,allow
すべてのホストからのアクセスを許可するということ。
アクセスが許可されているのでアクセスするとベーシック認証がでてきます。


Order Apache公式サイト
https://httpd.apache.org/docs/2.4/ja/mod/mod_access_compat.html#order

よくわからなかったので

Order Allow,Deny　にしてみました。

>Forbidden
>You don't have permission to access this resource.

と表示されます。ベーシック認証のダイアログすらでてこいません。

どうやらアクセスする権限がないということのようです。

たしかに公式サイトをみると

>デフォルトのアクセス状態が Deny になるためすべてのアクセスを拒否します。

とあります。
ベーシック認証でアクセスを拒否するという意味ではなくて、そもそも、アクセスの権限すらないということのようです。

ここもコピペでうまくいかないときのチェック項目です。

参考サイト：
https://httpd.apache.org/docs/2.4/ja/mod/mod_access_compat.html#page-header
http://koseki.hatenablog.com/entry/20100913/ApacheAccessControl