kamenokoki.com

【14日目】.htaccessに今日も苦戦

Posted:  Last Update:

※短縮リンク(パーマリンク)をApacheで動かす方法はこちらの記事にまとめてあります。

お小遣いを稼げるサイトを目指して、14日目です。2週間経とうとしているのに、まだサイトの公開すらできていません。

ロードマップ

進捗を見ると、こんな感じです。同じ場所で一週間足踏みしています。これが一番難しい所だと信じたい。

  • 準備 - サイトの全体像を決める
  • 使用するプログラミング言語を決めて環境を整える
  • サイトの基本構造を作って公開する
    • 大枠の作成
    • ヘッダの作成
    • フッタの作成
    • メイン部分の構成を作成
    • リンクを開いた時の動きを作成 ← 今ここ
    • ナビゲーションバーの作成
    • メインコンテンツの作成
    • 関連情報エリアの作成
    • 公開
  • 収益化に最適なサイトにアップグレードする
  • GoogleアドセンスとAmazonアソシエイトの申し込みをする
  • ローカルで簡単に入力ができるようにフォームを作る
  • フォローアップ - より収益化に向いたサイト構造に変更する

思ったところにindex.phpを探しに行ってくれない

昨日はやっと.htaccessなるものを使って、パーマリンクを開けるようにしたのですが…。 なぜかいつも一つ上の階層を見に行ってしまって、「「Internal Server Error」が表示されてしまいます。昨日PCを閉じた後色々い考えていたのですが、ホストの設定がそもそもいけないのではないかと思いつきました。

今はローカルホストが接続しているファルダ「Blog」の下に「kamenoko]というファルダをつけているのですが、このフォルダに直接ホストを設定したらどうだろう。「ローカルホスト/Kamenoko/blog/20200913」となっているのを、本番と全く同じになる「ローカルホスト/blog/20200913」にしてしまおうと言うわけです。

やってみると…。
2020.09.13 index.phpがうまく動かない…

あれぇ?今度はスタイルシートすら適用されなくなった… 調べたら、今度は「ローカルホスト/blog」にindex.phpを探しに行っています…。そのせいでスタイルシートが見つかけられなくて、設定した色とかが反映されていない模様。スタイルシートと同じ階層にある.phpファイルをどうやって読み込んでいるのかはもはや謎でしかない。

原因のあるっぽい場所は分かるのに、原因が分からない…

さきほどから手を変え品を変え、ひたすらGoogle検索しております…。 なかなか正解にたどり着けませんが、C:\Apache24\logsからエラーログや接続ログを見たり、Google Chromeの右クリックから検証で実際に表示されているページの中身を見たりするのがやたらと速くなった。今後のバグ修正にとっても役立ちそう。

ちなみに今の.htaccessの記述はこんな感じ。

RewriteEngine On
rewritebase /
RewriteRule ^([0-9a-zA-Z]+)/([0-9]+)/?$ index.php?category=$1&filenum=$2 [L]

2行目か3行目のなにかが悪いことは分かる。それしか分からない(笑)。

そしてこのせいで、「/blog/20200911」 に接続した後、リンク「./blog/20200911」を踏むと 「/blog/blog/20200911」 に接続し、さらにリンク「./blog/20200911」を踏むと 「/blog/blog/blog/20200911」 に接続すると言う、とんでもないことになっていることが分かりました。もう、笑うしかないよ。

とにかく片っ端から検証していく

気を取り直して検索していく中で、.htaccessに記述した「rewritebase /」 で.htaccessのある階層をベースにしても、転送先がindex.phpだとrewritebaseが無視されて、今の階層の下のindex.phpを探しに行くのだということが分かりました。 これが原因か?ということで、test用のトップページをindex.php以外の名前で作ってみることに。 うん、効かない。相変わらずblogフォルダの下に見に行きます。

リンクを絶対パスにしてみたけれど、これもやっぱりうまくいかない…。 諦めるしかないのか?

もしたしたらバスとフォルダ名が同じなのが根本的にいけないのではなかろうか…。 思いついたことはやってみよう。 ファルダなどの名前も変える、たくさん書き換える検証になるので、テスト用にデータを複製してテストフォルダに入れ、Apacheのホストもテスト用のものを作ってみました。 でも、できない!フォルダがないのにblogフォルダを見に行ってしまう!

恨めしい…。

また色々と検索をして、絶対パスを取得するPHPを見つけました。dirname(__FILE__)とか、dirname(__DIR__)とかですね。 確かにこれを使うと、D:\BLOG\Test というようなパスは得られるのですが…。 サーバー上で動かしている時にD:\BLOG\Testというリンクは役に立たない。なぜならhttp://localhost:50004/ が正しいアドレスだから! 本番環境ではたぶんうまく動くのでしょうけど、テストできないのは困ってしまう…。

正解に辿り着くのに語学力が必要だった

また検索して、Apacheの設定を変えるとうまくいくのではないかと一筋の希望が見えて来た。 ここまで来て気付いたのですが、ほぼテスト環境の構築が悪かったことに起因するモタモタが多すぎる…。やっぱり準備は大切です。 でもでも、一度構築してしまえば、いくらでもテストできるし! めげずに検索し続けるぞ!

結果、Apacheの解説に書いてあった。英語だったせいでたどり着くのに時間がかかっちゃいました。

Apacheのhttpd.confの設定が悪かったらしい。ホストの設定の、下の5行目と6行目、特に6行目を付け加えるだけであら不思議、インターネットと同じように動くらしい。

#http://localhost:50004/
Listen 50004
<VirtualHost localhost:50004>
DocumentRoot "D:/Blog/Test"
RewriteEngine On
RewriteOptions Inherit
</VirtualHost>

ここまで行きつくのに、すっごい時間がかかった!

でも、大事なのは成功したことだ!ちゃんとリンクが機能してる!

うまくいったので、テストで書いていた仕様を全て、Upload用のフォルダに書き写してきました。こちらもうまくいきました。

リンクは動いたけれど、まだまだ.htaccessの課題がある

今現在、.htaccessで分かっている課題は、次の通りです。
  1. index.phpに直接リンクすると、とっても時間がかかる。
  2. 存在しないファイル名に接続してもページが表示されてしまう。エラーページに飛びたい。
  3. txtファイルをブラウザでは呼び出せないようにしたい。

設定しなければいけないのですが、.htaccess飽きちゃった…。というか、よくわからないことが多いので、ストレスがたまる…。 今日はけっこう時間も経ってしまったので、このくらいにしておきます。明日は気分によって、.htaccessの作業を続けるか、サイトのページを作っていくか決めます。

記事をシェアする

亀の子に連絡

ランキング参加中!ぽちっとしてね

F2cランキングアイコン 人気ブログランキング ブログランキング・にほんブログ村へ

広告