< pocket

.htaccessとは?WordPressをコアサーバーで動かす時の注意点

.htaccessとは?WordPressをコアサーバーで動かす時の注意点

先日初めてブログデビューを果たした私ですが、WordPressに関してはズブの素人のためサーバの設定だけでもとんでもない時間がかかりました。

途方に暮れてTwitterで「WordPressの設定でハマッた」とつぶやいた時、手を差し伸べてくださったのがStocker.jpのなつきさんでした。本当にありがとうございました!

振り返ってみれば「なーんだそんなこと」という事件でしたが、今回はその失敗を忘れないよう書き留めておこうと思います。

(今回の記事は色々なサイト様から情報をかき集めて自分なりの解釈を書いたものです。もし間違いがありましたらご指摘等いただけると幸いです)

コアサーバーの特徴とは?

コアサーバーとはいくつもあるレンタルサーバーの中の一つです。私にとっては初のレンタルサーバーですが、周りの方から「価格は安いし、押さえる所はキッチリ押さえている」との評判を聞きこちらに決めました。

しかし!この「コアサーバー」、PHPを「セーフモード」で動かすという設定がされているらしく、画像のアップロードなどがうまくいきません!

解決するためには、「CGIモード」という設定でPHPを動かさなければならないとのこと。さっそくやってみなければ!!

アップロード失敗

その前に「セーフモード」「CGIモード」とは

こちらにわかりやすい解説がありましたので、引用させていただきます!
小粋空間 | PHP における「モジュール版」と「CGI 版」の比較 + WordPress の適用例

セーフモードとは

「セーフモード」とは、共有サーバでのセキュリティの問題を解決するための仕組みで、例えば、同一サーバの他のユーザが自ユーザのファイルを参照できないようにすることができます。

ふむふむ。安全にブログが書けるような設定、のようです。でも、セキュリティが厳しすぎてWordPressの「写真をアップロードしてよ!」という命令もきいてくれなくなっている・・・といったところでしょうか?

CGIモードとは

「CGI」は「Common Gateway Interface」の略で、サーバが受信したブラウザの要求に応じてプログラムを起動するための仕組みを指します。PHP の場合、ブラウザに

http://?/xxx.php

を URL として指定した場合、Webサーバは xxx.php を実行ファイルと認識してプログラムを起動し、その実行結果を返却します。これを「CGI 版」と言うようです。

ごめんなさい・・・あまり意味が・・・わからなかったんですが、とりあえず、こちらは「PHPファイルに書いてある命令に従ってくれる」ようなので、このモードならWordpressの「写真をアップして!」という命令もきいてくれそうです。

では早速、コアサーバーに「PHPをCGIモードで動かす」設定をしてあげましょう!

「.htaccess」ファイルを用意

コアサーバーに「CGIモードで動いて?」という設定をしてあげるには「.htaccess」というファイルが必要とのこと。「.htaccess」って・・・また知らん単語出てきたよ。何!?

「.htaccess」とは

ApacheなどのWebサーバで使用できる、Webサーバの動作をディレクトリ単位で制御するためのファイル。
引用:IT用語辞典 e-Words

ああ・・・なるほど。このファイルに設定の内容を書けばいいのだね。

では早速。参考にしたサイトはこちらです。
WordPress カスタマイズ | セーフモード対策(XREA ・ CORESERVER)

下記の命令文を書いて、「wp-admin」フォルダの直下におけばOKとのこと!

#CGIモードでPHPを動かす
&lt;Files ~ &quot;^(async-upload|update-core|update|plugins|plugin-install)\.php$&quot;&gt;
AddHandler application/x-httpd-phpcgi .php
&lt;/Files&gt;
FTP1

結果。

アップロード成功

なんとか動いてくれました。
しかし!これしきで攻略できるコアサーバーどのではなかった・・・。

トップページ以下の下層ページが「404 Not Found」

ブログ記事書いてパーマリンク設定(URLの設定)して、いざ!そのページを実際に見てみようと思ったら「404 Not Found」。

Not Found

いや、たった今記事書いたでしょ!?
アップしたでしょ!?
見つからないわけがないでしょ!?

しかもこの現象、パーマリンク設定を「デフォルト」に戻すとちゃんと表示されるというミステリー。

仕方なくまたGoogleで検索です。こちらがわかりやすかったです。
CMS MANIA | WordPressでパーマリンクや.htaccess変更後にトップページ以外が「404 Not Found」になってしまった場合

解決法は「.htaccessに『mod_rewrite ルール』を書き込む」というもの。
mod_rewrite ルールは下記となっています。

# BEGIN WordPress
&lt;IfModule mod_rewrite.c&gt;;
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
&lt;/IfModule&gt;
 
# END WordPress

ふむふむ。やってみようじゃないか、と試みたとき、ここでガッツリとハマってしまったのでした・・・。

.htaccessはいくつあってもいい

私がしてしまったミスは、「『.htaccess』はひとつしか作成してはならないものだ」と勘違いしてしまったこと。先ほどCGIモードの設定を書いた.htaccessに「mod_rewrite ルール」を追記してしまったのです。

違います!

なぜなら「.htaccess」にはこんな特性があるから!

.htaccessファイルで設定した内容は、.htaccessファイルがあるディレクトリとそのサブディレクトリに効果があり、効果があるディレクトリに入っているファイルすべてに影響をおよぼす。
引用:IT用語辞典 e-Words

完璧読み飛ばしてたー!自分!!

つまり、さっきの「.htaccess」は「wp-admin」フォルダにしか効かないのです!今回行いたい「パーマリンク設定」は、どうやらWordPress全体に命令したい設定なので、「.htaccess」を置くべき場所は「wp-admin」フォルダではなく「/public_html」の直下!

FTP2

そして「.htaccess」はいくつあってもよいのです!

また、サブディレクトリにも.htaccessファイルを別に置くこともでき、この場合は両方のファイルの効果が発生する(矛盾するときはサブディレクトリの設定を優先)。
引用:IT用語辞典 e-Words

うぎゃー!!完璧に私の思い込みでした。
また、思い込みとは恐ろしいもので、何故か誰かにその思い込みを指摘してもらわない限りずっと思い込んだままのことが多いのですよね・・・。

ドタバタ解決後の反省

反省今回は私は幸いにもなつきさんにご指摘いただいたおかげで自分の思い込みに気づくことができましたが、もしなつきさんのように教えてくれる人がいなかったら?・・・どうなっていたことやらと思います。

ですが、Googleで検索してその結果を実行するだけではなく、自分なりに「.htaccesとは」をちゃんと知ろうとしていれば、解決できた問題だったのではないか?とも思います。

今回はそういった自分への戒めの意味も込めて、乏しい知識ですが「○○とは」を説明する段階から記事を書こうと挑戦しました。

正直に言うと、素人の自分なりの解釈なので内容が正しいかどうかは自信が薄いです!
ですが、もし今後コアサーバーにWordPressを導入する際、つまづいた人のためになれれば最高だな、と思います。

以上、日々勉強!の彩がお送りしました。

この記事をシェアする!

コメント

0件のコメント

2件のトラックバック

コメント

もし何かコメントをいただければ幸いです。また、ご指摘等も大歓迎です。
よろしくお願いします。(※Eメールアドレスは公開されません)

トラックバック

トップに戻る