.htaccessの設定を色々調べて、これは今後も書いて置いておいた方がいいかも、と思ったものをメモ。
設定しても効かない場合はサーバーの仕様なので、サーバーごとに別のやり方があると思います。
・.htaccess保護
.htaccess自身にアクセスさせない設定。
<Files ~ “^\.ht”> deny from all </Files>
・ディレクトリ内一覧の非表示
セキュリティ面で構造を隠すのは重要かと。
Options -Indexes
・indexファイルの優先順位
あんまりないけど、ディレクトリ内にindexファイルが複数あるとき
DirectoryIndex index.html index.htm index.php index.cgi index.shtml
ちなみにさくらのサーバーの場合、上記のディレクトリ内一覧の非表示で「Options」は使えないので、
DirectoryIndex index.html index.htm index.php index.cgi index.shtml .ht
と書くと、一覧非表示と優先順位がひとまとめにできる。
これは、列挙されている拡張子がどれも存在しなかった場合、「.ht」と追記しておくと403を返すので、結果ディレクトリ内は見えないという仕様。
・URL wwwあり・index.htmlなし統一
検索エンジンは、wwwあり・なしURLは別物と見なすので、301リダイレクトさせる。
ついでにindex.htmlなしURLへ統一しておくと、アクセス解析の時分散しなくていいかも。(※リンクにindex.htmlを指定している場合)
RewriteEngine on RewriteCond %{HTTP_HOST} ^sample\.jp [NC] RewriteRule ^(.*) http://サイトのURL/$1 [R=301,L] RewriteCond %{THE_REQUEST} ^.*/index.html RewriteRule ^(.*)index.html$ http://サイトのURL/$1 [R=301,L]
・エラーページ404
存在しないURLへアクセスがあったとき返すページを設定。
ErrorDocument 404 /error.html
・phpをhtmlで動かす
AddType application/x-httpd-php .php .html
が、コレ、さくらでは動かず。。。
サーバーからphp-cgiをバイナリで落として、また上げて・・・とか諸々手間をかけてから下記のように書く。
Action myphp-script /php.cgi AddHandler myphp-script .php .html
ついでにrobots.txt。
・クロールを全拒否
User-Agent: * Disallow: /
・クロールを許可
User-agent: * Allow: /
・検索エンジンにXMLサイトマップの存在を通知
Sitemap: http://サイトのURL/sitemap.xml
・モバイル用クロール
User-agent: Googlebot-Mobile Disallow: User-agent: * Disallow: /
とまぁ、色々ありますけど、WordPressだとやってくれるのもあるので、純粋にHTMLで制作したサイトにはあった方がいいかな、と思います。
しかしサーバーによってできたりできなかったりで、調べる手間は発生しますかねぇ。