HTMLサイトをURLの変更してWordPressへ

ファイル拡張子の問題

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]