.htaccess

.htaccess は分散型の設定ファイルであり、Apache がディレクトリごとに設定変更を処理する方法です。

WordPress はこのファイルを使用して、Apache がルートディレクトリおよびそのサブディレクトリからファイルを提供する方法を操作します。特に、WP はこのファイルを修正して、きれいなパーマリンクを処理できるようにします。

このページは、破損した .htaccess ファイル(例:動作不良のプラグイン)を復元するために使用されることがあります。

Basic WP

  1. # BEGIN WordPress
  2. RewriteEngine On
  3. RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
  4. RewriteBase /
  5. RewriteRule ^index\.php$ - [L]
  6. RewriteCond %{REQUEST_FILENAME} !-f
  7. RewriteCond %{REQUEST_FILENAME} !-d
  8. RewriteRule . /index.php [L]
  9. # END WordPress

Multisite

WordPress 3.5 and up

WordPress 3.5 以降でマルチサイトを有効にした場合は、これらのいずれかを使用してください。

WordPress >=3.5 Subfolder Example
  1. # BEGIN WordPress Multisite
  2. # Using subfolder network type: https://wordpress.org/documentation/article/htaccess/#multisite
  3. RewriteEngine On
  4. RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
  5. RewriteBase /
  6. RewriteRule ^index\.php$ - [L]
  7. # add a trailing slash to /wp-admin
  8. RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
  9. RewriteCond %{REQUEST_FILENAME} -f [OR]
  10. RewriteCond %{REQUEST_FILENAME} -d
  11. RewriteRule ^ - [L]
  12. RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
  13. RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
  14. RewriteRule . index.php [L]
  15. # END WordPress Multisite
WordPress >=3.5 SubDomain Example
  1. # BEGIN WordPress Multisite
  2. # Using subdomain network type: https://wordpress.org/documentation/article/htaccess/#multisite
  3. RewriteEngine On
  4. RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
  5. RewriteBase /
  6. RewriteRule ^index\.php$ - [L]
  7. # add a trailing slash to /wp-admin
  8. RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
  9. RewriteCond %{REQUEST_FILENAME} -f [OR]
  10. RewriteCond %{REQUEST_FILENAME} -d
  11. RewriteRule ^ - [L]
  12. RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
  13. RewriteRule ^(.*\.php)$ $1 [L]
  14. RewriteRule . index.php [L]
  15. # END WordPress Multisite

WordPress 3.4 and below

WordPress 3.4 またはそれ以前のバージョンで最初にインストールし、マルチサイトを有効にした場合は、これらのいずれかを使用する必要があります。

WordPress <=3.4 SubFolder Example

WordPress 3.0 から 3.4.2 まで

  1. # BEGIN WordPress Multisite
  2. # Using subfolder network type: https://wordpress.org/documentation/article/htaccess/#multisite
  3. RewriteEngine On
  4. RewriteBase /
  5. RewriteRule ^index\.php$ - [L]
  6. # uploaded files
  7. RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]
  8. # add a trailing slash to /wp-admin
  9. RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
  10. RewriteCond %{REQUEST_FILENAME} -f [OR]
  11. RewriteCond %{REQUEST_FILENAME} -d
  12. RewriteRule ^ - [L]
  13. RewriteRule ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L]
  14. RewriteRule ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]
  15. RewriteRule . index.php [L]
  16. # END WordPress Multisite
WordPress <=3.4 SubDomain Example
  1. # BEGIN WordPress Multisite
  2. # Using subdomain network type: https://wordpress.org/documentation/article/htaccess/#multisite
  3. RewriteEngine On
  4. RewriteBase /
  5. RewriteRule ^index\.php$ - [L]
  6. # uploaded files
  7. RewriteRule ^files/(.+) wp-includes/ms-files.php?file=$1 [L]
  8. RewriteCond %{REQUEST_FILENAME} -f [OR]
  9. RewriteCond %{REQUEST_FILENAME} -d
  10. RewriteRule ^ - [L]
  11. RewriteRule . index.php [L]
  12. # END WordPress Multisite

General Examples

Options

+ で始まるオプションは、現在有効なオプションに追加され、 で始まるオプションは、現在有効なオプションから削除されます。

Options directive の可能な値は、次のいずれかの組み合わせです:

None

すべてのオプションがオフになります。

All

MultiViews を除くすべてのオプション。これがデフォルト設定です。

ExecCGI

mod_cgi を使用して CGI スクリプトの実行が許可されます。

FollowSymLinks

サーバーはこのディレクトリ内のシンボリックリンクをたどります。

Includes

mod_include によって提供されるサーバーサイドインクルードが許可されます。

IncludesNOEXEC

サーバーサイドインクルードは許可されますが、#exec cmd と #exec cgi は無効になります。

Indexes

URL がディレクトリにマップされ、DirectoryIndex がない場合、ディレクトリのフォーマットされたリストが表示されます。

MultiViews

mod_negotiation を使用してコンテンツ交渉「MultiViews」が許可されます。

SymLinksIfOwnerMatch

ターゲットがリンクと同じユーザー ID によって所有されている場合のみ、シンボリックリンクをたどります。

これにより、すべてのオプションが無効になり、その後 FollowSymLinks のみが有効になります。これは mod_rewrite に必要です。

  1. Options None
  2. Options FollowSymLinks

DirectoryIndex

DirectoryIndex Directive は、ディレクトリが要求された場合に Apache が提供するファイルを設定します。

複数の URL を指定することができ、その場合、サーバーは見つかった最初のものを返します。

  1. DirectoryIndex index.php index.html /index.php

DefaultLanguage

DefaultLanguage Directive は、特定の言語タグが関連付けられていないすべてのファイルにこれを使用させます。

  1. DefaultLanguage en

Default Charset

HTTP ヘッダーで送信されるデフォルトの文字エンコーディングを設定します。Setting charset information in .htaccess

  1. AddDefaultCharset UTF-8

特定のファイルのための文字セットを設定

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

特定のファイルのために設定

  1. AddCharset UTF-8 .html

ServerSignature

ServerSignature Directive は、サーバー生成のドキュメントの下にトレーリングフッター行を設定することを許可します。オプションで、サーバー生成ページ(内部エラードキュメント、FTP ディレクトリリスト、mod_status および mod_info の出力など)にサーバーバージョンと仮想ホスト名を含む行を追加します(CGI 生成のドキュメントやカスタムエラードキュメントは含まれません)。

On

サーバーバージョン番号とサーバー名を持つ行を追加します

Off

フッター行を抑制します

Email

参照ドキュメントの ServerAdmin への「mailto:」参照を作成します

  1. SetEnv SERVER_ADMIN admin@site.com
  2. ServerSignature Email

Force Files to be Downloaded

以下の設定により、指定された拡張子で終わるファイルのリクエストはブラウザに表示されず、「名前を付けて保存」ダイアログが強制され、クライアントがダウンロードできるようになります。

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

HTTP Compression

AddOutputFilter Directive は、ファイル名拡張子をサーバーからクライアントに送信される前に応答を処理するフィルターにマッピングします。これは、SetOutputFilter および AddOutputFilterByType で定義されたフィルターに加えて行われます。このマッピングは、すでに有効なものにマージされ、同じ拡張子に対して既存のマッピングを上書きします。

Enable Compression も参照してください

  1. AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript
  2. BrowserMatch ^Mozilla/4 gzip-only-text/html
  3. BrowserMatch ^Mozilla/4\.0[678] no-gzip
  4. BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

特定のファイルに対して圧縮を強制

  1. SetOutputFilter DEFLATE

Send Custom HTTP Headers

Header Directive を使用すると、すべてのリクエストまたは特定のファイルに対して HTTP ヘッダーを送信できます。サイトの HTTP ヘッダーは、FirebugChrome Dev ToolsWireshark または Advanced HTTP Request / Response Headers を使用して表示できます。

  1. Header set X-Pingback "https://example.com/xmlrpc.php"
  2. Header set Content-Language "en-US"

Unset HTTP Headers

これにより、HTTP ヘッダーが解除されます。always を使用すると、削除を試みる際に特に強力になります。

  1. Header unset Pragma
  2. Header always unset WP-Super-Cache
  3. Header always unset X-Pingback

Password Protect Login

これは wp-login.php ファイルを保護するのに非常に便利です。この Advanced Htpasswd/Htdigest file creator を使用できます。

Basic Authentication

  1. AuthType Basic
  2. AuthName "Password Protected"
  3. AuthUserFile /full/absolute/path/to/.htpasswd
  4. Require valid-user
  5. Satisfy All

Digest Authentication

  1. AuthType Digest
  2. AuthName "Password Protected"
  3. AuthDigestDomain /wp-login.php https://example.com/wp-login.php
  4. AuthUserFile /full/absolute/path/to/.htpasswd
  5. Require valid-user
  6. Satisfy All

Require Specific IP

これは、リストされた IP アドレスのみへのアクセスを許可する方法です。RequireAll の代わりに RequireAny を使用することに注意してください。

  1. <RequireAny>
  2. Require ip 192.0.2.123
  3. Require ip 2001:0DB8:1111:2222:3333:4444:5555:6666
  4. </RequireAny>

Protect Sensitive Files

これにより、wp-config ファイル、htaccess/htpasswd、および WordPress debug.log へのすべてのウェブアクセスが拒否されます。インストールされたサイトでは、install.php も追加することを検討してください。

  1. <FilesMatch "^(wp-config\.php|\.htaccess|\.htpasswd|debug\.log)$">
  2. Require all denied
  3. </FilesMatch>

Require SSL

これにより SSL が強制され、正確なホスト名が必要になります。そうでない場合は、SSL バージョンにリダイレクトされます。/wp-admin/.htaccess ファイルで便利です。

  1. SSLOptions +StrictRequire
  2. SSLRequireSSL
  3. SSLRequire %{HTTP_HOST} eq "www.example.com"
  4. ErrorDocument 403 https://www.example.com

External Resources

See also

Changelog

  • 2023-04-25: htaccess からの元のコンテンツ。