今回は買い物とは関係ないですが、ブログ作成で困っていたことが解決しましたのでメモとして書いておきます。
一般の方は意味不明と思いますのでスルーしてください。
このブログは、レンタルサーバーである「ハッスルサーバー」を使用しています。
このたび、別ブログを違うレンタルサーバーである「ExpressWeb」を申し込みました。
容量が30G(ハッスルサーバーは1.5G)、マルチドメインが無制限(ハッスルサーバーは32個)、ハッスルサーバーよりは会社の規模が大きく安定してそうな気がする、レンタルサーバーを分散させたほうが一方がトラブルのときに保険になる、入会金が3150円と高かったのですが1年間の料金3150円が無料のキャンペーンをやってました。
格安レンタルサーバー
ハッスルサーバー(私が使用しています)
初期費用1000円 利用料金12ヶ月で2500円(容量1.5GB)
ExpressWeb(私の2つ目のサーバー契約です)
初期費用3150円 利用料金12ヶ月で3150円(容量30GB)
ブログは「wordpress」を使用しており、ハッスルサーバーでは問題なく使いこなせていました。
しかし、「ExpressWeb」でどうしても分からなくて困ることが起きました。
個別の記事が404になってきます。カテゴリーやアーカイブやカレンダーから読み出したときに404を返します。
サーバーの会社のコントロールパネルから「wordpress」が直接インストールできるという便利な機能を使ったからなのか、スタイルシートをさわったせいなのか悩みました。
ネットで検索しているうちに原因が判明しました。
個別の記事のパーマリンクをカスタム設定にした場合、内部で書き換えできなくなるということでした。
確認してみると、初期設定では問題なく表示できました。
しかし、初期設定ではなくカスタム設定したいので方法を探しました。
するとパーマリンクをカスタム設定するには、「.htaccess」ファイルをルートディレクトリーに置く必要があるとのことです。
今まで「wordpress」をインストールしたら自動的に作られていたのですが、今回確認してみると「.htaccess」ファイルがありません。
そこで、「.htaccess」ファイルを作成し、アップロードしました。
しかし、今度は500エラーが出て動きません。
最終的に発見したのは、「.htaccess」ファイルは、「Apache」環境下でないと使えないということです。
その環境かどうかは、レンタルサーバーの会社によって違うようです。
「Apache」環境のほかに「IIS」環境があります。
「ハッスルサーバー」は「Apache」環境下ですが、「ExpressWeb」は「Apache」環境下ではなく「IIS」環境下でした。
ちなみに、「Apache」環境下では普通は「.htaccess」ファイルは自動的に生成されるようです。
じゃあどうしたらいいのかを調べてみると、「404エラーマッピングを使って所定のパーマリンクを書き換える」という方法があり、試してみましたが、サーバー環境を作るなどの手間がかかるようでできません。
次に発見したのが、「mod_rewrite なしでのパーマリンクの設定」です。
「web.config 」ファイルに、あるモジュールを追記するだけで解決できるという方法です。
しかし、上手くいきませんでした。
そして、到達したのが本家「wordpress日本語版」の「パーマリンクの使い方」のページです。
先ほどの2つの方法もコメントされていましたが、実は後者の方法が正解で、記述内容が少し違っていたのです。
改めて、その記述を追記してみたところ問題なく動きました。
よかった。
「wordpress日本語版」 http://ja.wordpress.org/
「パーマリンクの使い方」のページ http://wpdocs.sourceforge.jp/%E3%83%91%E3%83%BC%E3%83%9E%E3%83%AA%E3%83%B3%E3%82%AF%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9
内容は下記のとおり(抜粋)
mod_rewrite なしでのパーマリンクの設定
“Pretty” パーマリンクには、通常は mod_rewrite が必要です。(Windows サーバーでよく使われている) IIS は、mod_rewrite をサポートしていません (Windows 上で Apache 2.0.54 を使用している場合は、apache\conf\httpd.conf で有効にすることにより、mod_rewrite が動作するかもしれません) 。
IIS 7 を使用していて、サーバーの管理者権限をもっている場合は、マイクロソフト社の URL Rewrite Module で代替可能です。mod_rewrite と全く同じとはいきませんが、WordPress の pretty パーマリンクをサポートしています。インストールしたら WordPress フォルダの web.config ファイルを開き、次のルールを system.webServer に追加してください。