.htaccess
.htaccess
は分散型の設定ファイルであり、Apache がディレクトリごとに設定変更を処理する方法です。
WordPress はこのファイルを使用して、Apache がルートディレクトリおよびそのサブディレクトリからファイルを提供する方法を操作します。特に、WP はこのファイルを修正して、きれいなパーマリンクを処理できるようにします。
このページは、破損した .htaccess
ファイル(例:動作不良のプラグイン)を復元するために使用されることがあります。
Basic WP
# BEGIN WordPress
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
Multisite
WordPress 3.5 and up
WordPress 3.5 以降でマルチサイトを有効にした場合は、これらのいずれかを使用してください。
WordPress >=3.5 Subfolder Example
# BEGIN WordPress Multisite
# Using subfolder network type: https://wordpress.org/documentation/article/htaccess/#multisite
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
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]
# END WordPress Multisite
WordPress >=3.5 SubDomain Example
# BEGIN WordPress Multisite
# Using subdomain network type: https://wordpress.org/documentation/article/htaccess/#multisite
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
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]
# END WordPress Multisite
WordPress 3.4 and below
WordPress 3.4 またはそれ以前のバージョンで最初にインストールし、マルチサイトを有効にした場合は、これらのいずれかを使用する必要があります。
WordPress <=3.4 SubFolder Example
WordPress 3.0 から 3.4.2 まで
# BEGIN WordPress Multisite
# Using subfolder network type: https://wordpress.org/documentation/article/htaccess/#multisite
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 Multisite
WordPress <=3.4 SubDomain Example
# BEGIN WordPress Multisite
# Using subdomain network type: https://wordpress.org/documentation/article/htaccess/#multisite
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 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 に必要です。
Options None
Options FollowSymLinks
DirectoryIndex
DirectoryIndex Directive は、ディレクトリが要求された場合に Apache が提供するファイルを設定します。
複数の URL を指定することができ、その場合、サーバーは見つかった最初のものを返します。
DirectoryIndex index.php index.html /index.php
DefaultLanguage
DefaultLanguage Directive は、特定の言語タグが関連付けられていないすべてのファイルにこれを使用させます。
DefaultLanguage en
Default Charset
HTTP ヘッダーで送信されるデフォルトの文字エンコーディングを設定します。Setting charset information in .htaccess
AddDefaultCharset UTF-8
特定のファイルのための文字セットを設定
AddType 'text/html; charset=UTF-8' .html
特定のファイルのために設定
AddCharset UTF-8 .html
ServerSignature
ServerSignature Directive は、サーバー生成のドキュメントの下にトレーリングフッター行を設定することを許可します。オプションで、サーバー生成ページ(内部エラードキュメント、FTP ディレクトリリスト、mod_status および mod_info の出力など)にサーバーバージョンと仮想ホスト名を含む行を追加します(CGI 生成のドキュメントやカスタムエラードキュメントは含まれません)。
On
サーバーバージョン番号とサーバー名を持つ行を追加します
Off
フッター行を抑制します
参照ドキュメントの ServerAdmin への「mailto:」参照を作成します
SetEnv SERVER_ADMIN admin@site.com
ServerSignature Email
Force Files to be Downloaded
以下の設定により、指定された拡張子で終わるファイルのリクエストはブラウザに表示されず、「名前を付けて保存」ダイアログが強制され、クライアントがダウンロードできるようになります。
AddType application/octet-stream .avi .mpg .mov .pdf .xls .mp4
HTTP Compression
AddOutputFilter Directive は、ファイル名拡張子をサーバーからクライアントに送信される前に応答を処理するフィルターにマッピングします。これは、SetOutputFilter
および AddOutputFilterByType
で定義されたフィルターに加えて行われます。このマッピングは、すでに有効なものにマージされ、同じ拡張子に対して既存のマッピングを上書きします。
Enable Compression も参照してください
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
特定のファイルに対して圧縮を強制
SetOutputFilter DEFLATE
Send Custom HTTP Headers
Header Directive を使用すると、すべてのリクエストまたは特定のファイルに対して HTTP ヘッダーを送信できます。サイトの HTTP ヘッダーは、Firebug、Chrome Dev Tools、Wireshark または Advanced HTTP Request / Response Headers を使用して表示できます。
Header set X-Pingback "https://example.com/xmlrpc.php"
Header set Content-Language "en-US"
Unset HTTP Headers
これにより、HTTP ヘッダーが解除されます。always を使用すると、削除を試みる際に特に強力になります。
Header unset Pragma
Header always unset WP-Super-Cache
Header always unset X-Pingback
Password Protect Login
これは wp-login.php
ファイルを保護するのに非常に便利です。この Advanced Htpasswd/Htdigest file creator を使用できます。
Basic Authentication
AuthType Basic
AuthName "Password Protected"
AuthUserFile /full/absolute/path/to/.htpasswd
Require valid-user
Satisfy All
Digest Authentication
AuthType Digest
AuthName "Password Protected"
AuthDigestDomain /wp-login.php https://example.com/wp-login.php
AuthUserFile /full/absolute/path/to/.htpasswd
Require valid-user
Satisfy All
Require Specific IP
これは、リストされた IP アドレスのみへのアクセスを許可する方法です。RequireAll の代わりに RequireAny を使用することに注意してください。
<RequireAny>
Require ip 192.0.2.123
Require ip 2001:0DB8:1111:2222:3333:4444:5555:6666
</RequireAny>
Protect Sensitive Files
これにより、wp-config ファイル、htaccess/htpasswd、および WordPress debug.log へのすべてのウェブアクセスが拒否されます。インストールされたサイトでは、install.php も追加することを検討してください。
<FilesMatch "^(wp-config\.php|\.htaccess|\.htpasswd|debug\.log)$">
Require all denied
</FilesMatch>
Require SSL
これにより SSL が強制され、正確なホスト名が必要になります。そうでない場合は、SSL バージョンにリダイレクトされます。/wp-admin/.htaccess
ファイルで便利です。
SSLOptions +StrictRequire
SSLRequireSSL
SSLRequire %{HTTP_HOST} eq "www.example.com"
ErrorDocument 403 https://www.example.com
External Resources
- Official Apache HTTP Server Tutorial: .htaccess files
- Official Htaccess Directive Quick Reference
- Htaccess Tutorial
- Google PageSpeed for Developers
- Stupid Htaccess Tricks
- Advanced Mod_Rewrite
See also
- htaccess for subdirectories
- Using Permalinks
- Changing File Permissions
- UNIX Shell Skills
- Rewrite API
Changelog
- 2023-04-25: htaccess からの元のコンテンツ。