- ベストアンサー
同じテンプレなのに、URLでは違うページに見せる方法
- ブログサイトで、トップページと個別記事ページを同じテンプレで表示させたい場合、どのような記述を行えば実現できるのかについて質問です。
- 現在の状況では、個別記事ページのURLにアクセスするとファイルが存在しない旨のエラーが表示されます。そのため、HTMLファイルを作成する手間をなくしつつ、正しいURLで個別記事ページを表示させたいです。
- 使用している言語はPHPで、フレームワークにはEthnaを利用しています。どなたかご存知の方がいらっしゃいましたら、教えていただけると助かります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
.htaccessで正規表現を使って設定すれば、 testblog.jp/blog/(ブログ記事ID).html にアクセスすれば index.php?blog_id=(ブログID)を呼ぶようにする、 ということが可能です。 別の方法としては、 index.phpでブログの一覧を記事全文ごとDBから取得しているのであれば、 文章部分をhiddenにしておいてタイトルをクリックすればjQueryでスタイルを変更して表示する、 とかもできそうですね。 ブログTOPは記事詳細ページ達のインデックスになるわけですから、本当はファイルを分けて ・index.php:ブログ一覧をDBから取得してタイトルを一覧表示する ・detail.php:ブログ記事(1件)を詳細表示する とするのが個人的には良いと思います。 ブログIDのパラメータが付加された時だけ詳細ページを表示する、といった分岐を書くんですよね? 記事一覧と記事詳細はやっぱり体裁も違うでしょうし、ソースを後から見るときもわかりやすくなる のではないでしょうか。 デザインが共通の部分は共通ファイルにして両方のファイルに差し込めばいいわけですし。 ご参考まで。
その他の回答 (1)
- shimix
- ベストアンサー率54% (865/1590)
#Ethnaのことはよくは知りません(汗 (1) mod_rewriteを使ってファイルが存在しなければ、特定のファイル(phpスクリプト)にreweiteする(アクセスしてきたファイル名をQueryStringなどで渡す)。スクリプトではQueryStringから適切な内容を返す。 (2) ディレクトリ(blog/)ではなく、ファイルblogとしてphp動作するように設定する。スクリプト(blog)ではpathinfoの値から適切な内容を返す(ブラウザが認識しているpathと実際のpathがずれるのでCSSファイルや画像ファイルなどの外部ファイルの指定に注意:基本的に「/」からの記述にする)。 普通のフレームワークだと(1)を想定した造りになっていると思います(全部最初はコントローラが受ける形)。
お礼
回答頂きありがとうございました! やはりこういった場合はmod_rewriteを使用するのが一般的なのですね。 使用したことが無かったため若干避けていた部分もあったので、この機会に詳しく調べてみたいと思います。 本当にありがとうございました。
お礼
いくつもの回答を提示して頂きありがとうございます! blanc210様のおっしゃっている通り、今回はdetail.phpという別途ファイルを作成して表示させたいと思います。 1つのファイルで表示することに変にこだわっていた部分もあったのでアドバイスを頂き大変助かりました。 本当にありがとうございました!