ファイル拡張子の問題
HTMLなどで公開していたサイトを、WordpressなどのCMSへ変更する場合、URLを変えざるを得ない場合があります。
Wordpressなどでは、「/」などでURLが終わりますが、通常のHTMLサイトでは末尾は、「.html」です。
WordPress化で、URLが変わることで生じる不利益は、リンクして頂いている被リンクが無効になってしまうことです。ツイッターなどのツイートも無効になり、そして、検索エンジンの評価が消失することになります。
つまり、新規にサイト創設したことと同じになってしまいます。
これはどうしても回避したいわけです。
.htmlのままにする方法
投稿なら、カスタム構造
WordPressの投稿であれば、パーマリンク設定で、カスタム構造を選び、以下のように記述するだけです。
/%postname%.html
これで、末尾が.HTMLになります。
カテゴリーを付けるのであれば、
/%category%/%postname%.html
で、行います。
しかしながら、問題は固定ページの場合です。以上の方法では、Wordpressの固定ページは変更できません。
function.phpを編集する方法
WordPressのテーマのファイルを編集して.tmlを末尾に付ける方法があります。
add_action( 'init', 'mytheme_init' ); if ( ! function_exists( 'mytheme_init' ) ) { function mytheme_init() { global $wp_rewrite; $wp_rewrite->use_trailing_slashes = false; $wp_rewrite->page_structure = $wp_rewrite->root . '%pagename%.html'; // flush_rewrite_rules( false ); } }
テーマのfunction.phpに追記することで、.HTML化出来ます。6行目を注目。
詳しくは、こちら
デメリットとしては、テーマを変更した場合、再度、記述し直す必要があることと、今後の記事もすべて、.htmlになることです。
プラグインを使う方法
WordPressのプラグインを使って同じようなことをすることが出来ます。
.html on PAGES
.html on PAGESと言うプラグインがあります。
これは、固定ページの末尾に強制的に.html付けるプラグインです。
デメリットとしては、.htmlにしたくない親ページなども含め、今後作るページすべてが.htmlになってしまうことです。
また、新しいバージョンのWordpressでこのプラグインが動作しなくなったり、サポートされなくなったりした場合の不安もあります。
Custom Permalinks
Custom Permalinksは、個別にurlを設定出来るプラグインです。過去の(特定の)記事だけ、.htmlを付けて、今後の記事に付けないと言うことも出来ます。
不安の1つは解消しました。
しかし、新しいバージョンのWordpressで、動作しなくなった時、対応して貰えるのか、10年先、20年先を考えると不安はありますね。
URLを変更して対策する方法
構わずURL を変更して、それに付いて対策する方法もあります。
WordPressの自動処理
WordPressで構わず、「.html」を付けて、URLを記述しますと、「-html/」に変換されます。「.」が「-」になり、「/」が付きます。
一見、意味がないようですが、「ファイル名 .html」でアクセスしても、Wordpressの自動処理で、「ファイル名 -html/」に飛ばされます。
これで、被リンクがあっても生かされます。
問題は、検索エンジンの今までの評価がどうなるかと言う事です。
.htaccessを使う方法
「.html」でアクセスがあった場合、URLの変更を明示して、そちらのページに飛ばすと共に、検索エンジンに教える方法になります。
WordPressのあるディレクトリの、「.htaccess」に以下を記述します。.htaccessの冒頭がよろしいと思います。RewriteBaseは実情に合わせて変更します。「.htaccess」にWordpressが自分用に書いたものと同じ位置。
RewriteEngine On RewriteBase / RewriteRule ^(.*)\.html$ $1/ [L,R=301]
今までの「ファイル名+.html」でアクセスがあった場合に、「同じファイル名+/」に飛ばして、検索エンジンにも教えます。
問題は、すべての評価が受け継げるわけでなく、概ね今までの85%であるとされていることです。同じドメインであったら全部引き継げるとも言われていますが、真相は不明です。
しかし、この方法が一番一般的でもあります。
「-html/」にして、なおかつ、「.html」は、「-html/」であると教えておくことも出来ます。
RewriteEngine On RewriteBase / RewriteRule ^(.*)\.html$ $1-html/ [L,R=301]