サブディレクトリにWordPressをインストールした場合の設定。プレビューが表示されない問題も解決。

コーポレートサイトのWordPress案件は静的ディレクトリも混在で作ることが多く、/wp/とディレクトリを作りWordPressをインストールすることがあります。

そのままだと投稿のプレビューが機能しなくなってしまうので、以下方法で解決。

サブディレクトリへのインストール方法はこちら『WordPress を専用ディレクトリに配置する

webルートに置くhtaccessへの記述(/.htaccess)

# BEGIN WordPress
RewriteCond %{QUERY_STRING} preview=true
RewriteRule ^/?$ /index.php$1 [L]

<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

プレビューのURLは、本来なら/index.phpにアクセスしないといけませんが、/区切りの「http://xxx.co.jp/」にアクセスされるとindex.htmlが表示されてしまう。
http://xxx.co.jp/?post_type=test&p=100&preview=true

なのでURLに「preview=true」がついていたら、index.phpを見るようにすると表示されるようになります。

RewriteCond %{QUERY_STRING} preview=true
RewriteRule ^/?$ /index.php$1 [L]

ちなみに昔はhtaccessとかあんま触れなくて、JSで管理画面のプレビューボタンのURLを無理やり変えてました。お恥ずかしい!

wpディレクトリに置くhtaccessへの記述(/wp/.htaccess)

一応こちらも載せておきますが、webルートに置くのと/wp/ディレクトリに置くhtaccrssは若干違います。
気をつけるところは、2箇所を「/wp/」と変える必要があるところです。

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

SNSでもご購読できます。