WordPressをパワーアップする.htaccessの設定集
Post on:2009年3月20日
WordPressにおける、RSS配信、パーマリンク設定、ページレスポンスの改善、スパム対策、セキュリティに関する「.htaccess」の設定をCats Who Codeから紹介します。
10 awesome .htaccess hacks for WordPress
- 注意
- .htaccessを修正・変更する場合、必ずバックアップをすることをお勧めします。
1. RSS FeedをFeedBurnerで配信
WordPressのRSS FeedsをFeedBurnerにリダイレクトさせます。
※FeedBurnerの利用には、登録が必要です。
ルートの「.htaccess」に下記を記述します。
1 2 3 4 5 6 7 8 |
<textarea name="code" class="html" cols="60" rows="5"> <ifModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_USER_AGENT} !FeedBurner [NC] RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC] RewriteRule ^feed/?([_0-9a-z-]+)?/?$ http:///feeds.feedburner.jp/example [R=302,NC,L] </ifModule> </textarea> |
※L.05のURLは自分のURLに変更してください。
関連:リダイレクト設定例1 - FeedBurner Information
2. URLを短くする
WordPressのパーマリンク設定で、デフォルトの「category」を使用している場合、URLは下記のようになります。
http://example.com/category/wordpress
これを「category」無しでもアクセスできるよう、リダイレクト(301)させるには、ルートの「.htaccess」に下記を記述します。
1 2 3 |
<textarea name="code" class="html" cols="60" rows="5"> RewriteRule ^category/(.+)$ http://example.com/$1 [R=301,L] </textarea> |
※L.01のURLは自分のURLに変更してください。
アクセスがあるとリダイレクトされ、URLは下記のようになります。
http://example.com/wordpress
関連:パーマリンクの変更後、旧アドレスでもアクセスできるWordPressのプラグイン
3. アクセス負荷の軽減
ブラウザのキャッシュを使用して、サーバーへのアクセス負荷をセーブします。
1 2 3 4 5 6 7 8 9 |
<textarea name="code" class="html" cols="60" rows="5"> FileETag MTime Size <ifmodule mod_expires.c> <filesmatch "\.(jpg|gif|png|css|js)$"> ExpiresActive on ExpiresDefault "access plus 1 year" </filesmatch> </ifmodule> </textarea> |
※L.02の拡張子は適宜変更してください。
4. 転送量の軽減
スタティックなデータをgzipで圧縮することで、転送量を減らすことができます。
1 2 3 4 5 6 |
<textarea name="code" class="html" cols="60" rows="5"> AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4.0[678] no-gzip BrowserMatch bMSIE !no-gzip !gzip-only-text/html </textarea> |
5. パーマリンク変更後のリンク切れ防止
パーマリンク設定に「/%year%/%monthnum%/%day%/%postname%/」を使用している場合、被リンクからのリンク切れを起こさないで「%postname%」に変更することができます。
パーマリンク設定のカスタム構造に「%postname%」を設定してください。これを適用すると、URLは下記のようになります。
http://example.com/name-of-the-post
ルートにある「.htaccess」に下記を記述します。
リダイレクトは301です。
1 2 3 |
<textarea name="code" class="html" cols="60" rows="5"> RedirectMatch 301 /([0-9]+)/([0-9]+)/([0-9]+)/(.*)$ http://example.com/$4 </textarea> |
※L.01のURLは自分のURLに変更してください。
関連:パーマリンクの変更後、旧アドレスでもアクセスできるWordPressのプラグイン
6. コメントのスパム対策
akismetなどのプラグインでもスパムコメントは防げますが、多くのスパムbotを防御する「.htaccess」の設定です。
リファラが無いポストを制御します。
1 2 3 4 5 6 7 8 |
<textarea name="code" class="html" cols="60" rows="5"> RewriteEngine On RewriteCond %{REQUEST_METHOD} POST RewriteCond %{REQUEST_URI} .wp-comments-post\.php* RewriteCond %{HTTP_REFERER} !.*example.com.* [OR] RewriteCond %{HTTP_USER_AGENT} ^$ RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L] </textarea> |
※L.04のURLは自分のURLに変更してください。
関連:akismetより手間要らずのプラグイン「WP-SpamFree」も強力です。
7. 一時的にメンテナンスページを表示
サイトのリニューアルやアップグレード時などに、一時的にメンテナンスページを表示させます。
検索エンジンがそのメンテナンスページをインデックスしないように、リダイレクトには302を使用します。
1 2 3 4 5 6 |
<textarea name="code" class="html" cols="60" rows="5"> RewriteEngine on RewriteCond %{REQUEST_URI} !/maintenance.html$ RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123 RewriteRule $ /maintenance.html [R=302,L] </textarea> |
L.02, 04には、メンテナンスページを指定してください。
L.03のIPはあなたのIPを指定してください。
関連:HTTPステータスコード - Wikipedia
503: Service Unavailable(サービス利用不可)
8. 画像の無断使用を防御
画像などのファイルの無断リンクを防御します。
無断使用しているサイトに帯域を占有されるのを防ぎます。
「.htaccess」に下記を記述します。
1 2 3 4 5 6 7 8 |
<textarea name="code" class="html" cols="60" rows="5"> RewriteEngine On #Replace ?mysite\.com/ with your blog url RewriteCond %{HTTP_REFERER} !^http://(.+\.)?example\.com/ [NC] RewriteCond %{HTTP_REFERER} !^$ #Replace /images/nohotlink.jpg with your "don't hotlink" image url RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L] </textarea> |
9. 管理画面のアクセスをIP制限
指定したIPからのみ、管理画面へのアクセスを許可します。
※アクセスするIPがスタティックなものか確認してください。
wp-admin直下の「.htaccess」に下記を記述します。
1 2 3 4 5 6 7 8 9 10 11 |
<textarea name="code" class="html" cols="60" rows="5"> AuthUserFile /dev/null AuthGroupFile /dev/null AuthName "Example Access Control" AuthType Basic <limit GET> order deny,allow deny from all allow from xxx.xxx.xxx.xxx </limit> </textarea> |
L.08のIPに、アクセスするIPを記述してください。
10. IPでのアクセス制限
スパマーやスパムbotなどをIPで指定してアクセス禁止にします。
ルートの「.htaccess」に下記を記述します。
1 2 3 4 5 6 7 |
<textarea name="code" class="html" cols="60" rows="5"> <limit GET POST> order allow,deny deny from xxx.xxx.xxx.xxx allow from all </limit> </textarea> |
L.03のIPに、アクセスを禁止するIPを記述してください。
複数のIPを指定する場合は、03の行を増やしてください。
sponsors