あるWordPressで構築したサイトのトップページをindex.htmlにしたところ記事のプレビューが機能しなくなってしまったのですが、.htaccessに追記することでプレビューできるようになりました。これはその時の備忘録。
パラメータに「preview=true」を設定することでindex.htmlではなくindex.phpを読み込むようになり、下書きプレビューが正常に表示できるようになるようです。
RewriteCond %{QUERY_STRING} preview=true RewriteRule ^/?$ index.php$1 [L]
検索も対策をしなければ、検索結果ページにindex.htmlを表示してしまうようです。
RewriteCond %{QUERY_STRING} \\?s=([^&]+) [NC] RewriteRule ^/?$ /index.php$1 [L]
上記を追記することで、検索結果でindex.htmlを表示ではなく正常に検索結果を表示するようです。
例えば「wp」というサブディレクトリを作ってそこにインストールした環境の場合の記述はこんな感じ。
RewriteCond %{QUERY_STRING} preview=true RewriteRule ^/?$ ./wp/index.php$1 [L] RewriteCond %{QUERY_STRING} \\?s=([^&]+) [NC] RewriteRule ^/?$ ./wp/index.php$1 [L]
.htaccessはこんな感じで追記しました。プレビューのみ有効にししています。
(対応したサイトでは検索機能が特殊で対応が不要だったため)
# BEGIN WordPress # "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は # 動的に生成され、WordPress フィルターによってのみ修正が可能です。 # これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。 <IfModule mod_rewrite.c> RewriteCond %{QUERY_STRING} preview=true RewriteRule ^/?$ ./wp/index.php$1 [L] RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress