コーポレートサイトの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]
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