【WordPress】トップページに静的HTML(index.html)を置いても記事プレビューを有効にする

電脳備忘録

ある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

広告

ブログの維持費に充てるでございます・・・。