Title: htaccess
Author: Dion Hulse
Published: 2018年11月2日
Last modified: 2020年11月19日

---

## カテゴリー

 * [はじめに](https://ja.wordpress.org/support/category/getting-started/)
 * [インストール](https://ja.wordpress.org/support/category/installation/)
 * [基本的な使い方](https://ja.wordpress.org/support/category/basic-usage/)
 * [基本的な管理](https://ja.wordpress.org/support/category/basic-administration/)
 * [カスタマイズ](https://ja.wordpress.org/support/category/customizing/)
 * [メンテナンス](https://ja.wordpress.org/support/category/maintenance/)
 * [セキュリティ](https://ja.wordpress.org/support/category/security/)
 * [高度なトピック](https://ja.wordpress.org/support/category/advanced-topics/)
 * [トラブルシューティング](https://ja.wordpress.org/support/category/troubleshooting/)

## 翻訳・改善にご協力ください

 ドキュメンテーションを現在[英語版](https://wordpress.org/support/)から翻訳中です。
どなたでも[ご協力いただけます](https://ja.wordpress.org/team/2019/08/06/359/)。

 誤字や間違った情報にお気づきの方は、各記事の下にあるフィードバックセクションから
お知らせください。

# htaccess

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

WordPress は、このファイルを利用して、Apache がルートディレクトリやサブディレクトリ
からファイルをどのように取り出すかを制御します。最も注目すべき点は、WordPress は
きれいなパーマリンクを実現するために、このファイルを変更することです。

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

## WordPress の基本形

    ```wp-block-preformatted
    # BEGIN WordPress

    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

    # END WordPress
    ```

##  マルチサイト

###  WordPress 3.5 以降

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

**サブフォルダー方式の例**

    ```wp-block-preformatted
    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]
    ```

**サブドメイン方式の例**

    ```wp-block-preformatted
    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 以前をインストールしていた時にマルチサイトを有効にした場合、
下記のいずれかを使う必要があります :

**サブフォルダー方式の例**

WordPress 3.0 through 3.4.2

    ```wp-block-preformatted
    # 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
    ```

**サブドメイン方式の例**

    ```wp-block-preformatted
    # 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
    ```

##  一般的な例

###  Options

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

 [Options ディレクティブ](http://httpd.apache.org/docs/trunk/mod/core.html#options)
の有効な値は、以下を任意に組み合わせたものです。

** None **

 すべてのオプションを無効にする

** All **

 MultiViews を除くすべてのオプションを有効にする。これがデフォルト。

** ExecCGI **

 mod_cgi による CGI スクリプトの実行を許可する。

** FollowSymLinks **

 サーバが、このディレクトリ内でシンボリックリンクをたどれるようにする。

** Includes **

 mod_include によるサーバーサイドインクルードを許可する。

** IncludesNOEXEC **

SSI を有効にするが、`#exec cmd` と `#exec cgi` は無効にする。

** Indexes **

 もし、URL がディレクトリにマップするリクエストであって、かつ DirectoryIndex で指定
したファイルが無ければ、ディレクトリ内の一覧を整形して返す。

** MultiViews **

 mod_negotiation による [コンテントネゴシエーション](http://httpd.apache.org/docs/trunk/content-negotiation.html)
された “MultiViews” を許可する。

** SymLinksIfOwnerMatch **

 シンボリックリンクの参照先とシンボリックリンク自体の所有ユーザ ID が同じ場合のみ、
シンボリックリンクをたどる。

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

    ```wp-block-preformatted
    Options None
    Options FollowSymLinks
    ```

###  DirectoryIndex

 [DirectoryIndex](http://httpd.apache.org/docs/trunk/mod/mod_dir.html#directoryindex)
ディレクティブは、ディレクトリ自体がリクエストされた時に Apache が返すファイルを
指定します。

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

    ```wp-block-preformatted
    DirectoryIndex index.php index.html /index.php
    ```

###  DefaultLanguage

[DefaultLanguage](http://httpd.apache.org/docs/trunk/mod/mod_mime.html#defaultlanguage)
ディレクティブは、明示的な言語タグが指定されていないファイルについて使用する、デフォルト
の言語を指定します。

    ```wp-block-preformatted
    DefaultLanguage en
    ```

### デフォルトの文字セット

 HTTP ヘッダーに含めて送信されるデフォルトの文字エンコーディングを指定します。[Setting charset information in .htaccess](http://www.w3.org/International/questions/qa-htaccess-charset)
を参照してください。

    ```wp-block-preformatted
    AddDefaultCharset UTF-8
    ```

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

    ```wp-block-preformatted
    AddType 'text/html; charset=UTF-8' .html
    ```

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

    ```wp-block-preformatted
    AddCharset UTF-8 .html
    ```

###  ServerSignature

 [ServerSignature](http://httpd.apache.org/docs/trunk/mod/core.html#serversignature)
ディレクティブは、サーバが生成するドキュメントの末尾に付けるフッターの設定を行い
ます。サーバのバージョンと仮想ホスト名を含む 1 行を、サーバが生成するドキュメント（
エラーメッセージ、FTP のディレクトリリスト、mod_status や mod_info の出力など）へ
追加できます。

** On **

サーバのバージョン、稼動中の仮想ホストの ServerName が書かれた 1 行を追加

** Off **

フッターをつけない

** Email **

参照されたドキュメントの ServerAdmin を指す “mailto:” を追加

    ```wp-block-preformatted
    SetEnv SERVER_ADMIN admin@site.com
    ServerSignature Email
    ```

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

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

    ```wp-block-preformatted
    AddType application/octet-stream .avi .mpg .mov .pdf .xls .mp4
    ```

### HTTP 圧縮

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

こちらも参照ください:  [https://developers.google.com/speed/docs/insights/EnableCompression](https://developers.google.com/speed/docs/insights/EnableCompression)

    ```wp-block-preformatted
    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
    ```

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

    ```wp-block-preformatted
    SetOutputFilter DEFLATE
    ```

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

 Header ディレクティブは、すべてのリクエストまたは特定のファイルについて、追加の
HTTP ヘッダーを送信します。サイトの HTTP ヘッダーは次のようなツールで見ることができ
ます: [Firebug](https://getfirebug.com/), Chrome Dev Tools, [Wireshark](https://www.wireshark.org/)
または [オンラインツール](http://www.askapache.com/online-tools/http-headers-tool/)。

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

###  HTTPヘッダーの設定解除

これにより、HTTPヘッダの設定が削除されます。always を指定すると、非常に強力にヘッダ
の削除が行われます。

    ```wp-block-preformatted
    Header unset Pragma
    Header always unset WP-Super-Cache
    Header always unset X-Pingback
    ```

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

これは wp-login.php ファイルを保護するのにとても便利です。パスワード生成に [htpasswd generator](http://www.askapache.com/online-tools/htpasswd-generator/)
を利用できます。

**[Basic 認証](http://ja.wikipedia.org/wiki/Basic%E8%AA%8D%E8%A8%BC)**

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

**[Digest 認証](http://ja.wikipedia.org/wiki/Digest%E8%AA%8D%E8%A8%BC)**

    ```wp-block-preformatted
    <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 アドレスにだけにアクセスを許可する方法です。

    ```wp-block-preformatted
    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 アクセスを拒否します。

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

###  SSL を要求する

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

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

## 外部リソース

 *  [公式 Apache チュートリアル: .htaccess ファイル](http://httpd.apache.org/docs/trunk/howto/htaccess.html)
 *  [Official Htaccess ディレクティブ クイックリファレンス](http://httpd.apache.org/docs/trunk/mod/quickreference.html)
 *  [Htaccess チュートリアル](http://www.askapache.com/htaccess/htaccess.html)
 *  [Google PageSpeed for Developers](https://developers.google.com/speed/docs/insights/rules)
 *  [Stupid Htaccess Tricks](http://perishablepress.com/stupid-htaccess-tricks/)
 *  [Advanced Mod_Rewrite](http://www.askapache.com/htaccess/crazy-advanced-mod_rewrite-tutorial.html)

## あわせて読もう

 * [htaccess for subdirectories](https://codex.wordpress.org/htaccess%20for%20subdirectories)
 * [パーマリンクの使い方](https://wpdocs.osdn.jp/Using_Permalinks)
 * [ファイルパーミッションの変更](https://wpdocs.osdn.jp/Changing_File_Permissions)
 * [[[UNIX Shell Skills](https://codex.wordpress.org/UNIX%20Shell%20Skills)
 * [Rewrite API](https://codex.wordpress.org/Rewrite API)

## この記事は役に立ちましたか ? どうすればさらに改善できますか ?

フィードバックを送信するには[ログイン](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fja.wordpress.org%2Fsupport%2Farticle%2Fhtaccess%2F&locale=ja)
する必要があります。