さくらインターネットの共用レンタルサーバで、このたび.htaccess
にOptions
が使えるようになったそうです(※1)。10年以上使ってきて安定感もあってクライアントにオススメする第一候補としてるさくらの共用サーバですが、Options
が使えない件は不評だったみたいだし自分もたまに不便に感じることもありました。
メンテナンス・障害情報・機能追加|さくらインターネット公式サポートサイト
1.
All
、FollowSymLinks
は使えません。
そういうわけで、今までは「さくらインターネットのレンタルサーバ」用の.htaccess
を書いていたわけですが、これからは他のサーバと同じように書けそうです。まだ他にもOptions
が使えないサーバもあるかもしれないので、一応今まで書いていたものの保存ついでにメモとることにしました。
Indexes
/ディレクトリ一覧
今までのさくらのレンタルサーバでは、ディレクトリ内のファイルの一覧「Index of」を表示する自動インデックス機能がデフォルトで「有効」だったんですが、今回の変更によって「無効」がデフォルトになったそうです。これまでファイル一覧の表示をアテにしていたディレクトリは、これからは自動インデックス機能を「有効」に設定する必要があります。
新
# 自動インデックス機能:有効 ※一覧を表示
Options Indexes
# または
Options +Indexes
# 自動インデックス機能:無効(デフォルト) ※一覧を非表示
Options -Indexes
旧
以前はOptions
が使えなかったので、ファイル一覧を表示したくない場合はディレクトリのインデックスページを設定するDirectoryIndex
を使って、「インデックスページが無ければエラーページへ移動」する設定にしていました。
# ディレクトリに「index.html」「index.shtml」「index.php」「index.cgi」の
# いずれもない場合はルートにあるエラーページ「403」へ移動する
DirectoryIndex index.html index.shtml index.php index.cgi /403
MultiViews
/コンテントネゴシエーション
MultiViews
機能は、URLに拡張子が指定されなくてもコンテントネゴシエーションを行なって適当にファイルを判断してくれる機能です。引き続き「有効」がデフォルトだと思いますが、今まではOptions
が使えなかったのでこの機能をオフにできませんでした。
コンテントネゴシエーションが行われると、例えば「/topics/01.html
」へは「/topics/01
」でアクセス出来たりします。この場合、拡張子のないリンクが使えるので、ファイル名が01.php
や01.cgi
に変わってもURLを変えずに済みます。便利な半面、同名の画像やディレクトリが存在する場合のために有効な拡張子や優先順位の設定をするなど対応が必要な場合も出てきます。必要なければ無効にしておいてもいいと思います。
新
# MultiViews機能:無効 ※拡張子の省略無効
Options -MultiViews
# MultiViews機能:有効(デフォルト) ※拡張子の省略有効
Options MultiViews
# または
Options +MultiViews
旧
MultiViews
機能によって、「/topics/index
」のようなアクセスも/topics/index.html
や/topics/index.php
を表示するので、インデックスページのURLを「/topics/
」に統一する設定にこの辺りの対応も含めていました。「/topics/index/
」のようなディレクトリがあった場合にうまくやらないといけなかったりして話がややこしく面倒なので、既存のページに問題がない人はMultiViews
は切ってしまってもいいかもしれません。
<IfModule mod_rewrite.c>
RewriteEngine on
# 拡張子がないURLもスラッシュ終わりのURLに統一する
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*/)?index(?:.s?html?|.php|.cgi)?$ $1 [R=301,L]
</IfModule>
ExecCGI
, Includes
/CGI、SSI
何かの事情によってCGI
やSSI
を無効にしたい場合、Options
で可能になりました。CGI
を無効にすると、該当ファイルはアクセスエラーになります。SSI
を無効にするとSHTML
内の実行文はただのHTMLコメントになります。
新
# CGI無効
Options -ExecCGI
# SSI無効
Options -Includes
さくらインターネットのサーバ設定には今まで悩むこともありましたが、これからはラクになりそうです。また何か思いついたら記事にしたいと思います。