web/htaccess の履歴(No.2)


.htaccess#

確認ツール#

HTTPステータスコードを一括で確認できるので設定の確認に便利

生成ツール#

エラーページ設定#

ErrorDocument 404 /error/404.html
ErrorDocument 500 /error/500.html
404 http://example.com/error/404.html

のように絶対パスにすると、アドレスバーがエラーページに遷移してしまい少し不親切。できれば相対パスにしたい。

ドメイン変更#

Permanently(永久)に移転するときは301リダイレクトを使う 移転先でもページの階層構造が維持されていることが前提

RewriteCond %{HTTP_HOST} ^(old.nemusg.com)(:80)? [NC]
RewriteRule ^(.#) http://new.nemusg.com/$1 [R=301,L]

これでも同じ動作をする

Redirect permanent / http://new.nemusg.com/

階層構造が維持されておらず、ドメイン全体→1つのページに転送したい場合は下記になる

RedirectMatch 301 (.#) http://new.nemusg.com/

.htaccessが使えない環境ではmetaタグを使う

<meta http-equiv="refresh" content="0;URL='http://new.nemusg.com/'">

RewriteRuleにアンカーリンク#を書きたい#

NEフラグを追加する

RewriteRule ^(.#) http://new.nemusg.com/#anker [R=301,L,NE]

ドメインをwwwなしに統一#

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.nemusg\.com)(:80)? [NC]
RewriteRule ^(.#) http://nemusg.com/$1 [R=301,L]

よりも

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1%{REQUEST_URI} [R=301,L]

のほうが汎用的そう

画像の直リンクを防止する#

  • うまくいけば画像を外部サイトで表示しようとした場合403エラーになる
  • Googleは許可
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?nemusg\.com [NC]
RewriteCond %{HTTP_REFERER} !google\. [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ – [NC,F,L]

参考リンク#