2016-09-25 11 views
0

私はこれが間違っていると確信しており、これを行うにはより良い方法があります。データベースからブログ記事を動的にロードする

私はちょうど食べ物ブログのウェブサイトを作った。投稿はデータベースにアップロードされます。 HTMLファイルは、SELECTステートメントの情報を使用して必要なときに生成されます。

基本的には、新しいHTMLファイルを作成してページをそのように保存するのではなく、その場で作成するのが賢明だとは思わなかった。リンクや種類URLの

  1. ユーザーがクリックする

  2. URLがそうのように構成されています:

  3. www.website.com/name-of-post

    これは私の(ひどい)メソッドであります

  4. name-of-post.phpというHTMLファイルがないため、404エラーでリダイレクトされます。

  5. このページでは、「名前の投稿」がデータベースに存在するかどうかを確認します。

  6. もしそうなら、ファイルを生成します。それ以外の場合は、404エラーページを表示します。

この方法では、Googleによってインデックスが作成されないため、そのようにレシピを検索することはできません。

私はこれが正しいとは限りません。だからこれを行うためのより良い方法はありますか?

+0

[ヘルプ]を読んで質問する方法をご覧ください。私は[mcve]が必要です – mplungjan

答えて

2

まあ、PHPが20年前に発明された理由を発見したばかりです。 は、ウェブページを動的に生成できるテンプレートエンジンです。

データベースにコンテンツを保存するのが一般的です。ほとんどのコンテンツは単なるデータです。しかし、そのコンテンツを使用してWebページを構築することは、まったく別の問題です。あなたのファイルシステム上に実際の.htmlファイルを生成する必要もなく、そのために.htmlファイルをデータベースに保存する必要もありません。

templating in PHPのコンセプトは、コンテンツとは別のフォーマットを作成して、フォーマットを常に変更できるようにすることです。コンテンツは常に差し込むことができます。

たとえば、次は非常に単純なテンプレートです。

<h1>Hello <?=$name?></h1> 
<p>Today is <?=date('l F jS, Y')?>.</p> 

このページのフォーマットは、常に私たちは簡単に私達のデータベースからテンプレートに差し込むことができた変数である、内容にかかわらず、同じになります。あなたの問題は変わりません。 プラグインの一部の変数(データベース内のデータによって設定されている可能性があります)を含む単純なHTMLとPHPコードで記述されたテンプレートを格納できます。

動的にURLを作成するという概念は比較的似ています。あなたのWebサーバにindex.phpのようなメインのPHPスクリプト(通常はfront-controllerと呼ばれます)にすべてのリクエストをリダイレクトして、そのスクリプトにリクエストURI(例えば$_SERVER['REQUEST_URI']のようなものを使用)をチェックさせてもらい、その情報に基づいて、データベースから必要なコンテンツを取得し、そのテンプレートを使用して出力を生成し、クライアント用のページを出力することができます。

+0

私は理解していません。ステップ5で使用するさまざまなテンプレートがあります。データベースからデータを取得し、テンプレートに挿入します。 404ページのエラーを排除するために、すべてのリクエストを1ページにリダイレクトするようにWebサーバーを設定することができます。しかし、これは私のページがGoogleによって索引付けされていないという問題を解決しますか? – user2397282

+0

それが問題なのかどうかは不明です。要求がサーバーから404 HTTP応答コードを実際に生成する場合、Googleは「** Page Not Found **」と見なします。サーバー状態が存在しないインデックスページは、任意の検索エンジンにとって無意味です。しかし、あなたのサーバーで実際に何が起こっているのでしょうか?サーバーはHTTP 404 Page Not Foundで応答しますか?私は何とかこれが事実であると疑う。おそらく、おそらく、内部的に見つからない404を処理しているということです。これはうまくいきませんが、エンドユーザーにはわからないものです。 – Sherif

+0

ああ、わかりました。「技術的に」HTMLファイルではない場合、Googleはページのインデックスを作成しますか?私は404エラーを取得しますが、大丈夫と思われページを表示します。 – user2397282

関連する問題