.htaccessについて

.htaccessファイルを編集

WordPressを使用する際、.htaccessを編集する必要が出てくることがあります。.htaccessの編集はFTPツールを使ってファイルを操作するか、またはコマンドライン(Macの場合はターミナル)を使って行うことが可能です。

私は、数行程度の編集であればターミナルを使い、それ以外の場合はFTPを使ってファイルの編集を行います。このページでは、より一般的なFTPを使ったアクセス方法を見ていきます。

KAZUKi

サーバーの管理画面内で直接ファイルを編集することができるようファイルマネージャーを用意しているホスティング会社もありますので、利用できる場合はそちらを利用するのも良いでしょう。

接続に必要なもの

サーバーにFTPを使って接続するためには、下記の情報が必要です。

  • FTP Host
  • FTP Port
  • FTP Username
  • FTP Password

通常、これらの情報は契約しているホスティング会社の管理画面に記載されていますので各自で確認をお願いします。

サーバーに接続する

必要な情報を確認できましたら、下記いずれかのFTPクライアントを使ってサーバーにログインしてください。

Windows FTP クライアント

Mac FTP クライアント

.htaccessファイルを探す

WordPressにおける.htaccessファイルとは通常 public_html .htaccessのことを指します。一部のプラグインは public_html wp-content   .htaccessなど、ルートディレクトリ以外の.htaccessファイルを利用することもあります。これに該当するのは画像圧縮系のプラグインやセキュリティ保守系のプラグインになります。私たちがサーバーとWordPress間での設定を調整する際は、ルートディレクトリの.htacessファイルで編集を行います。

メモ

.htaccessファイルが見つからない時は?

FTPクライアントによっては.htaccessファイルを初期設定では表示しないようになっていますので、.htaccessファイルが見当たらない場合は下記ページを参考に表示設定を確認してください。

.htaccessファイルを編集する前に

.htaccessファイルはWordPressとサーバー間でのやりとり内容が記述された非常に重要なファイルであり、編集の内容によっては致命的なエラーに遭遇することがあります。

いつでも元の状態に復旧できるように事前にバックアップを取得することを強くオススメいたします。

.htaccessファイルのコード内容

.htaccessには下記の3種類の記述が存在します。プラグインが自動で行う記述内容とWordPressコアが管理する記述が書かれています。

  • プラグインが自動で行う記述 (特にキャッシュ系プラグイン)
  • WordPressコアが管理する記述
  • 自分で記入する追加の記述

参考までにWordPressコアが管理するコードを列挙しておきます。

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マルチサイトインストール

共通

htaccess
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]

サブディレクトリ

htaccess

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]

サブドメイン

htaccess

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]
注意

サブドメインを利用している場合サーバー設定内容(ドメインマッピングの有効など)によっては記述が頃なる場合があります。