• 赤色のリンクは、まだ日本語Codexに存在しないページ・画像です。英語版と併せてご覧ください。(詳細

このWikiはいつでも誰でも編集できます

htaccess

提供: WordPress Codex 日本語版
2015年6月6日 (土) 13:44時点におけるGblsm (トーク | 投稿記録)による版 (Options: クリーンアップ。)

移動先: 案内検索

この項目「htaccess」は、翻訳チェック待ちの項目です。加筆、訂正などを通して、Codex ドキュメンテーションにご協力下さい。

.htaccess は、Apache が設定変更をディレクトリ毎に管理するための分散型の設定ファイルです。

WordPress は、このファイルを利用して、Aapche がルートディレクトリやサブディレクトリからファイルをどのように取り出すかを制御します。最大の用途として、WordPress はカスタムパーマリンクを実現するために、このファイルを変更します。

この文書は、おかしくなった .htaccess ファイルの復元に使えるかもしれません(例えばプラグインの誤動作)。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

マルチサイト

WordPress 3.5 以降

WordPress 3.5 以降でマルチサイトを有効にするなら、下記のいずれかを使います。

サブフォルダー方式の例

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]

サブドメイン方式の例

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]


WordPress 3.4 以前

もともと WordPress 3.4 以前をインストールしていた時にマルチサイトを有効にした場合、下記のいずれかを使う必要があります:

サブフォルダー方式の例

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule  ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L]
RewriteRule  ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
# END WordPress

サブドメイン方式の例

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# uploaded files
RewriteRule ^files/(.+) wp-includes/ms-files.php?file=$1 [L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule . index.php [L]
# END WordPress


WordPress MU

最初は WordPress MU (WPMU) を使っていて、新しいバージョンの WordPress マルチサイトへ移行した場合は、.htaccess のルールがもっと複雑です:

サブフォルダー方式の例

RewriteEngine On
RewriteBase /

# BEGIN WordPress
#uploaded files
RewriteRule ^(.*/)?files/$ index.php [L]
RewriteCond %{REQUEST_URI} !.*wp-content/plugins.*
RewriteRule ^(.*/)?files/(.*) wp-includes/ms-files.php?file=$2 [L]

# add a trailing slash to /wp-admin
RewriteCond %{REQUEST_URI} ^.*/wp-admin$
RewriteRule ^(.+)$ $1/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule . - [L]
RewriteRule  ^([_0-9a-zA-Z-]+/)?(wp-.*) $2 [L]
RewriteRule  ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
# END WordPress


一般的な例

Options

Options ディレクティブ の有効な値は、以下を任意に組み合わせたものです。

前に + を付けたオプションは、現在有効なオプションへ追加されます。前に - を付けたオプションは現在有効なオプションから削除されます。

None 
すべてのオプションを無効にする。
All 
MultiViews を除くすべてのオプションを有効にする。これがデフォルト。
ExecCGI 
mod_cgi による CGI スクリプトの実行を許可する。
FollowSymLinks 
サーバが、このディレクトリ内でシンボリックリンクをたどれるようにする。
Includes 
mod_include が提供する SSI (Server-side includes) を有効にする。
IncludesNOEXEC 
SSI を有効にするが、#exec cmd<code> と <code>#exec cgi は無効にする。
Indexes 
もし、URL がディレクトリにマップするリクエストであって、かつ DirectoryIndex で指定したファイルが無ければ、ディレクトリ内の一覧を整形して返す。
MultiViews 
mod_negotiation による コンテントネゴシエーション された "MultiViews" を許可する。
SymLinksIfOwnerMatch 
シンボリックリンクの参照先とシンボリックリンク自体の所有ユーザ ID が同じ場合のみ、シンボリックリンクをたどる。

次の例はすべてのオプションを無効にした上で、FollowSymLinks だけを有効にします。これは mod_rewrite に必要な設定です。

Options None
Options FollowSymLinks


DirectoryIndex

DirectoryIndex ディレクティブは、ディレクトリ自体がリクエストされた時に Apache が探すファイルを指定します。

複数の URL を指定できます。その場合、最初に見つかったファイルが使用されます。

DirectoryIndex index.php index.html /index.php


DefaultLanguage

DefaultLanguage ディレクティブは、明示的な言語タグが指定されていないファイルについて使用する、デフォルトの言語を指定します。

DefaultLanguage en


デフォルトの文字セット

HTTP ヘッダーに含めて送信されるデフォルトの文字エンコーディングを指定します。Setting charset information in .htaccess を見てください。

AddDefaultCharset UTF-8

特定のファイルタイプに文字セットを指定する

AddType 'text/html; charset=UTF-8' .html

特定のファイルについてセットする

<Files "example.html">
AddCharset UTF-8 .html
</Files>


ServerSignature

ServerSignature ディレクティブは、サーバが生成するドキュメントの末尾に付けるフッターの設定を行います。サーバのバージョンと仮想ホスト名を含む 1 行を、サーバが生成するドキュメント(エラーメッセージ、FTP のディレクトリリスト、mod_status や mod_info の出力など)へ追加できます。

On 
サーバのバージョン、稼動中の仮想ホストの ServerName が書かれた 1 行を追加
Off 
フッターをつけない
Email 
参照されたドキュメントの ServerAdmin を指す "mailto:" を追加
SetEnv SERVER_ADMIN admin@site.com
ServerSignature Email


ファイルをダウンロードさせる

下記の例は、指定した拡張子を持つファイルがリクエストされた場合にブラウザーに表示するのではなく、「名前をつけて保存」などのダイアログでクライアントがダウンロードできるようにします。

AddType application/octet-stream .avi .mpg .mov .pdf .xls .mp4


HTTP 圧縮

AddOutputFilter ディレクティブは、ファイル名の拡張子にフィルターを対応させます。フィルターは、クライアントへ送られる前に応答内容を処理します。これは、ほかのところで定義されたフィルター(SetOutputFilter と AddOutputFilterByType を含む)に加えて実行されます。マッピングは、実施済みのマッピングにマージされます。同じ拡張子についてすでにマッピングがあると、それを上書きします。

これも見てください: https://developers.google.com/speed/docs/insights/EnableCompression

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

特定のファイルを圧縮する

<FilesMatch "\.(js|css|txt|xml)$">
SetOutputFilter DEFLATE
</FilesMatch>


カスタム HTTP ヘッダーを送信

Header ディレクティブは、すべてのリクエストまたは特定のファイルについて、追加の HTTP ヘッダーを送信します。サイトの HTTP ヘッダーは次のようなツールで見ることができます: Firebug, Chrome Dev Tools, Wireshark または オンラインツール

Header set X-Pingback "http://www.askapache.com/xmlrpc.php"
Header set Content-Language "en-US"


HTTP ヘッダーを外す

HTTP ヘッダーを外します。always を指定すると、ヘッダー削除を強力に行います。

Header unset Pragma
Header always unset WP-Super-Cache
Header always unset X-Pingback


ログインのパスワード保護

これは wp-login.php ファイルを保護するのにとても便利です。パスワード生成に htpasswd generator を利用できます。

Basic 認証

<Files wp-login.php>
AuthType Basic
AuthName "Password Protected"
AuthUserFile /full/path/to/.htpasswd
Require valid-user
Satisfy All
</Files>

Digest 認証

<Files wp-login.php>
AuthType Digest
AuthName "Password Protected"
AuthDigestDomain /wp-login.php https://www.askapache.com/wp-login.php
AuthUserFile /full/path/to/.htpasswd
Require valid-user
Satisfy All
</Files>


IP アドレス制限

特定の IP アドレスだけにアクセスを許可する方法です。

ErrorDocument 401 default
ErrorDocument 403 default

<Files wp-login.php>
Order deny,allow
Deny from all
Allow from 198.101.159.98 localhost
</Files>


機密ファイルを保護

この例は、wp-config ファイル、error_log、php.ini および htaccess/htpasswd ファイルへの Web アクセスを拒否します。

<FilesMatch "^.*(error_log|wp-config\.php|php.ini|\.[hH][tT][aApP].*)$">
Order deny,allow
Deny from all
</FilesMatch>


SSL を要求する

この例は、SSL を強制し、正式なホスト名を要求します。これらの条件を満たさなければ SSL バージョンへリダイレクトします。/wp-admin/.htaccess の中で役立ちます。

SSLOptions +StrictRequire
SSLRequireSSL
SSLRequire %{HTTP_HOST} eq "www.wordpress.com"
ErrorDocument 403 https://www.wordpress.com


外部リソース


あわせて読もう

最新英語版: WordPress Codex » htaccess最新版との差分