crocodile notebook

feedly feedburner google+ twitter facebook creative commons BY:2.1 プロフィール


Control Room
Creative Commons License photo credit: Control Room / cliff1066

.htaccessやrobots.txtを設定していない方は、まずファイルを作成しましょう。

テキストエディタで『htaccess.txt』と『robots.txt』を作成します。
中身はなにも書いてなくてOK。
これをブログなどを公開しているサーバへアップロードします。

アップロードした『htaccess.txt』を『.htaccess』にリネームしたら完成!
※ファイル名の先頭に『.』を付けると、そのファイルは見えなくなってしまいます。
 そのため、アップロードしてからファイル名を変更するようにしてください。

.htaccessでページコントロール

外部からのリンクでURLが間違えている場合や、画像への直リンクなど。
どうしてもコチラの意図や希望から外れてしまうことは生じます。
そうしたときに、できるだけコントロールしてあげるための設定情報が.htaccessです。

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [R=301,L]
RewriteCond %{QUERY_STRING} ^([-=a-zA-z0-9]+)/page/([0-9]+)/?$
RewriteRule ^$ /?%1&paged=%2 [R=301,L]

AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

ExpiresActive On
ExpiresByType image/gif "access plus 1 weeks"
ExpiresByType image/png "access plus 1 weeks"
ExpiresByType image/jpg "access plus 1 weeks"
ExpiresByType text/css "access plus 604800 seconds"
ExpiresByType image/x-icon "access plus 2592000 seconds"
ExpiresByType application/javascript "access plus 1 weeks"
ExpiresByType application/x-javascript "access plus 1 weeks"
ExpiresByType text/javascript "access plus 1 weeks"

<FilesMatch ".(gif|jpe?g|png|js|css)$">
Header set Cache-Control "max-age=604800"
</FilesMatch>

<FilesMatch ".(ico|swf|flv|pdf)$">
Header set Cache-Control "max-age=2592000"
</FilesMatch>

<FilesMatch ".(pl|php|cgi|spl|scgi|fcgi)$">
Header unset Cache-Control
</FilesMatch>

<Files ~ "\.(gif|png|jpg)$">
 SetEnvIf Referer "^http://mag\.torumade\.nu" ShowOK
 SetEnvIf Referer "^$" ShowOK
 order deny,allow
 deny from all
 allow from env=ShowOK
</Files>

 
ボクが最低限で設定している.htaccessの記載内容です。
上から説明していきますね。

誤URLを正URLへ転送する

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [R=301,L]
RewriteCond %{QUERY_STRING} ^([-=a-zA-z0-9]+)/page/([0-9]+)/?$
RewriteRule ^$ /?%1&paged=%2 [R=301,L]

 
他のブログなどからリンクしてもらっていても、URLが間違えてることがあります。
また、WordPressなどの場合、途中でパーマリンクの書式を変更する可能性もあります。
そうした場合に、間違えているURLを正しいURLに書き換え(リダイレクト)しています。
詳しい書き方は以下を参照してください。
参考:.htaccessのRedirectRuleでURLクエリーを含めた301リダイレクトを設定する方法

転送データを圧縮して効率化する

AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

 
HTMLやCSSなど(画像以外)をブラウザーへ送る際に圧縮する設定になります。
上記を1セットとして記載すれば、だいたいのページでは足りると思います。
利用しているサーバによっては『AddOutputFilterByType』が使えない場合も。
その際は以下のように記載します。

SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
Header append Vary User-Agent env=!dont-vary

 
圧縮転送が適切に設定されているかはPage Speed Insightsで確認できます。

ファイルキャッシュの有効期限を設定して無駄な転送を抑える

ExpiresActive On
ExpiresByType image/gif "access plus 1 weeks"
ExpiresByType image/png "access plus 1 weeks"
ExpiresByType image/jpg "access plus 1 weeks"
ExpiresByType text/css "access plus 604800 seconds"
ExpiresByType image/x-icon "access plus 2592000 seconds"
ExpiresByType application/javascript "access plus 1 weeks"
ExpiresByType application/x-javascript "access plus 1 weeks"
ExpiresByType text/javascript "access plus 1 weeks"

<FilesMatch ".(gif|jpe?g|png|js|css)$">
Header set Cache-Control "max-age=604800"
</FilesMatch>

<FilesMatch ".(ico|swf|flv|pdf)$">
Header set Cache-Control "max-age=2592000"
</FilesMatch>

<FilesMatch ".(pl|php|cgi|spl|scgi|fcgi)$">
Header unset Cache-Control
</FilesMatch>

 
上記では画像(gif / png / jpg)は1週間(604,800秒)の有効期限に。
CSSやJavaScriptも1週間の有効期限に。
faviconやswf、pdfは1か月(2,592,000秒)と設定しています。

CSSやJavaScriptを修正した場合は、ファイル名も変更する必要があります。
いちばん簡単なのは更新日付と履歴番号をファイル名に追記する方法。
たとえば『./script2013052600.js』や『./style2013052701.css』などですね。
こうすることでキャッシュしていたファイルと異なるファイルとなります。
キャッシュは同名ファイルに対してのみ有効になるので、これで新たにキャッシュされます。

キャッシュの有効期限が適切に設定されているかはPage Speed Insightsで確認できます。

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

<Files ~ "\.(gif|png|jpg)$">
 SetEnvIf Referer "^http://mag\.torumade\.nu" ShowOK
 SetEnvIf Referer "^$" ShowOK
 order deny,allow
 deny from all
 allow from env=ShowOK
</Files>

 
上記では画像ファイルに関しての直リンクを防止しています。
http://mag.torumade.nuを含むURLからの要求であれば許可で、それ以外は拒否になります。
http://mag.torumade.nuを含んでいるかの設定が『SetEnvIf Refere』です。
しかし、PCにインストールしているウイルス対策ソフトによっては弊害もあります。
その対策として、かならず『SetEnvIf Referer “^$” ShowOK』を併記します。

robots.txtで検索エンジンに正しく伝える

robots.txtを必要とするのはGoogleなどの検索システム。
検索システムがブログなどの内容を調べるときに参照するファイルです。
ここに『見せたくないファイル(フォルダ)』や『見せない検索エンジン』を記載します。
robots.txtは原則として『拒否』についてだけを記載します。
記載されていないものは検索システムに『すべて許可』と判断されます。

User-agent: *
Disallow: /wp-admin/
Disallow: /wp-content/
Disallow: /wp-includes/
Disallow: *.php*
Disallow: *.js
Disallow: *.css
Disallow: *preview*

User-agent: Googlebot-Image
Disallow: /
Allow: /wp-content/uploads/

User-agent: Mediapartners-Google
Disallow:

Sitemap: http://mag.torumade.nu/sitemap.xml
Sitemap: http://mag.torumade.nu/sitemap.xml.gz

 
上記はボクがWordPressでブログなどを作る場合の基本形になります。

User-agent: *
Disallow: /wp-admin/
Disallow: /wp-content/
Disallow: /wp-includes/
Disallow: *.php*
Disallow: *.js
Disallow: *.css
Disallow: *preview*

 
WordPressではシステム関係が公開フォルダにあるため、検索システムはそれも調べてしまいます。
そのため、プログラム部分の各種ファイルは検索システムからの調査を拒否します。

User-agent: Googlebot-Image
Disallow: /
Allow: /wp-content/uploads/

 
Googleの画像検索は『/wp-content/uploads/』を許可して、それ以外はすべて拒否します。

User-agent: Mediapartners-Google
Disallow:

 
Google Adsenceのマッチングシステムに対しては何も拒否しません。
※Disallow(拒否)するファイルやフォルダはない、と書いています。

Sitemap: http://mag.torumade.nu/sitemap.xml
Sitemap: http://mag.torumade.nu/sitemap.xml.gz

 
このブログのサイトマップを設定しています。
2種類を書いていますが圧縮されているかの違いだけで、内容は同じです。
通常はどちらかだけで問題ありません。
2種類記載しても悪影響はありません。

.htaccessもrobots.txtも情報公開に必要なデザインツール

たぶんどんなブログなどでも設定しておくべきな内容だけを簡単に取り上げてみました。
リダイレクトについては必要な内容が異なるので注意が必要ですが。
それ以外については、ほぼそのままを利用いただいて問題ないと思います。
(ドメインはちゃんと書き換えてくださいね)

ただしこれは本当に最低限の内容でしかないので、必要に応じた内容を調べて設定してくださいね。

Apacheクックブック 第2版 ―Webサーバ管理者のためのレシピ集
Ken Coar Rich Bowen
オライリージャパン
売り上げランキング: 167,472
WordPressプラグイン100選
WordPressプラグイン100選
posted with amazlet at 13.05.27
矢津 宗一
株式会社ギャップ・ジャパン
売り上げランキング: 122,875

SEOとか考える前に基本をおさらい。.htaccessとrobots.txtを見直そう!

UPDATE: 2013.05.27
, , , ,




併せ読みに選ばれている
記事はこちらのようです

crocodile notebookも4年目なので、ユーザビリティについて考えてみた結果

crocodile notebookも4年目なので、ユーザビリティについて考えてみた結果

google pagespeed insightやGTmatrixの指摘事項をヒントに改善してみた中から、コストもかからず比較的簡単なものをピックアップしてみました。

wordpressサイトがパンダアップデートの影響を避けられるかもしれない5つの方法

wordpressサイトがパンダアップデートの影響を避けられるかもしれない5つの方法

パンダアップデートの影響に巻き込まれたような気が多分にしてきたので、回復実例を参考に対策を施しました。 wordpress向けrobots.txtの設定実例も記載しています。

Facebookのソーシャルプラグイン風のTwitterソーシャルプラグイン

Facebookのソーシャルプラグイン風のTwitterソーシャルプラグイン

twitterのフォロワーリストをfacebook風ソーシャルウィジェットのようなレイアウトでブログに掲載するjQueryプラグインです。 カスタマイズも容易なので使いやすいですよ。

.htaccessのRedirectRuleでURLクエリーを含めた301リダイレクトを設定する方法

.htaccessのRedirectRuleでURLクエリーを含めた301リダイレクトを設定する方法

.htaccessのRedirect RuleでURLクエリーを含めた場合のサンプルが少ないようなので参考になれば。

Twitter Mentions as Commentsが上手く機能しないので対応してみた

Twitter Mentions as Commentsが上手く機能しないので対応してみた

WordPressからTwitterへの更新通知をfeedburnerからwp to twitterプラグインに変更しました。 これでTwitter Mentions as Commentsも取得できるようになるけど、肝心の自動処理が動かないバグ?

俺の雑誌愛が暴走する雑誌だけのブログ『crocodile MAG’STACK』始めてました。

俺の雑誌愛が暴走する雑誌だけのブログ『crocodile MAG’STACK』始めてました。

自分の雑誌録を兼ねたブログを立ち上げました。 読んで益なし損もなし。薬にならなきゃ毒でもなし。