みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

同じテンプレなのに、URLでは違うページに見せる

言語:php
フレームワーク:ethna

タイトルでうまく伝えることが出来なかったので詳細を書かせて頂きます。

ブログサイトで、タイトルの一覧が並んだトップページがあったとします。
URL(仮)は「testblog.jp/blog/」

ここでタイトルの一つをクリックすると、そのブログの文章全てが表示されるページに飛びます。
そのときのURLは「testblog.jp/blog/01.html」
しかし、実際に01.htmlというファイルは存在せず、トップページと同じテンプレにDBから
ブログのデータを呼び出し文章を表示させたいと考えています。

ここで質問なのですが、
どういった記述を行えば「testblog.jp/blog/01.html」といった無いページのURLを表示させることが出来るのでしょうか?

現状では「testblog.jp/blog/01.html」にアクセスすればそのファイルはありませんというエラーになります。

ブログを作成するたびにHTMLファイルを作成といったことは避けたいので、どなたかご存知の方がいらっしゃいましたら宜しくお願い致します。


また、質問に不備がありましたらご指摘お願いします。

投稿日時 - 2012-05-18 13:38:11

QNo.7482356

すぐに回答ほしいです

質問者が選んだベストアンサー

.htaccessで正規表現を使って設定すれば、
testblog.jp/blog/(ブログ記事ID).html にアクセスすれば index.php?blog_id=(ブログID)を呼ぶようにする、
ということが可能です。

別の方法としては、
index.phpでブログの一覧を記事全文ごとDBから取得しているのであれば、
文章部分をhiddenにしておいてタイトルをクリックすればjQueryでスタイルを変更して表示する、
とかもできそうですね。


ブログTOPは記事詳細ページ達のインデックスになるわけですから、本当はファイルを分けて
・index.php:ブログ一覧をDBから取得してタイトルを一覧表示する
・detail.php:ブログ記事(1件)を詳細表示する
とするのが個人的には良いと思います。
ブログIDのパラメータが付加された時だけ詳細ページを表示する、といった分岐を書くんですよね?
記事一覧と記事詳細はやっぱり体裁も違うでしょうし、ソースを後から見るときもわかりやすくなる
のではないでしょうか。
デザインが共通の部分は共通ファイルにして両方のファイルに差し込めばいいわけですし。
ご参考まで。

投稿日時 - 2012-05-18 14:38:19

お礼

いくつもの回答を提示して頂きありがとうございます!

blanc210様のおっしゃっている通り、今回はdetail.phpという別途ファイルを作成して表示させたいと思います。
1つのファイルで表示することに変にこだわっていた部分もあったのでアドバイスを頂き大変助かりました。

本当にありがとうございました!

投稿日時 - 2012-05-18 15:49:37

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

#Ethnaのことはよくは知りません(汗

(1)
mod_rewriteを使ってファイルが存在しなければ、特定のファイル(phpスクリプト)にreweiteする(アクセスしてきたファイル名をQueryStringなどで渡す)。スクリプトではQueryStringから適切な内容を返す。

(2)
ディレクトリ(blog/)ではなく、ファイルblogとしてphp動作するように設定する。スクリプト(blog)ではpathinfoの値から適切な内容を返す(ブラウザが認識しているpathと実際のpathがずれるのでCSSファイルや画像ファイルなどの外部ファイルの指定に注意:基本的に「/」からの記述にする)。

普通のフレームワークだと(1)を想定した造りになっていると思います(全部最初はコントローラが受ける形)。

投稿日時 - 2012-05-18 14:19:28

お礼

回答頂きありがとうございました!

やはりこういった場合はmod_rewriteを使用するのが一般的なのですね。
使用したことが無かったため若干避けていた部分もあったので、この機会に詳しく調べてみたいと思います。

本当にありがとうございました。

投稿日時 - 2012-05-18 15:46:48

あなたにオススメの質問