lyco: homepage aufbau

Hallo Leute,
Ich möchte meine Homepage neu aufbauen.
Und zwar so

if (isset($_GET["page"]))
         $page = $_GET"page"];
       else
         $page = "home";

echo "<html>\n";
       echo "<body>\n";
       echo "  <table border='0' width='100%'>\n";

include  "menu.php";

switch ($page)
       {
          case "home"      : include "home.php";     break;
          case "login"     : include "login.php";    break;
          case "news"      : include "news.php";      break;
          case "shoutbox"  : include "shoutbox.php"; break;
          case "profil"    : include "profile.php";  break;
          case "downloads" : include "downlods.php"; break;
          default          : include "home.php";
       }

echo "  </table>\n";
       echo "</body>\n";
       echo "</html>\n";

Nun meine Frage:
Die php Dateien, die included werden sind ja einzelne Seiten mit Inhalt.
Werden diese von Suchmaschinen nicht gefunden.
Denn ich möchte es nicht, dass z.B die Seite news.php gefunden wird und dann diese von der Suchmaschine gezeigt wird, da diese kein Disign hat.

Oder ist es möglich, wenn mann www.meineSeite.ch/news.php aufgerufen wird, dass dann nicht die news.php angezeigt wird sordern auf www.meineSeite.ch/index.php?page=news geleitet wird?

Kann mir da jemand erklähren wie das läuft?

  1. Die php Dateien, die included werden sind ja einzelne Seiten mit Inhalt. Werden diese von Suchmaschinen nicht gefunden.

    Nein, es sei denn, du offenbarst ihre Existenz. Idealerweise liegen solche zu inkludierenden Ressourcen in einem INC-Verzeichnis, das via robots.txt nicht indiziert werden darf und für das DirectoryIndex via htaccess deaktiviert ist.

    ist es möglich, wenn mann www.meineSeite.ch/news.php aufgerufen wird, dass dann nicht die news.php angezeigt wird sordern auf www.meineSeite.ch/index.php?page=news geleitet wird?

    Besser: www.example.ch/news -> www.example.ch/index.php?page=news
    Denn was interessiert einen Client, welche Technik du verwendest (Endung .php, könnte genausogut .html oder ganz was anderes sein).

    Kann mir da jemand erklähren wie das läuft?

    Mit Hilfe von mod_rewrite (wenn die Serversoftware Apache ist), für den IIS gibt's bspw. hier eine Anleitung. Zu mod_rewrite gibt's auch eine deutsche Seite: http://www.modrewrite.de/.

    Siechfred

    --
    Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.
    1. Danke Siechfred
      Aber wie realiere ich das mit der robots.txt und DirectoryIndex?

      Die php Dateien, die included werden sind ja einzelne Seiten mit Inhalt. Werden diese von Suchmaschinen nicht gefunden.

      Nein, es sei denn, du offenbarst ihre Existenz. Idealerweise liegen solche zu inkludierenden Ressourcen in einem INC-Verzeichnis, das via robots.txt nicht indiziert werden darf und für das DirectoryIndex via htaccess deaktiviert ist.

      ist es möglich, wenn mann www.meineSeite.ch/news.php aufgerufen wird, dass dann nicht die news.php angezeigt wird sordern auf www.meineSeite.ch/index.php?page=news geleitet wird?

      Besser: www.example.ch/news -> www.example.ch/index.php?page=news
      Denn was interessiert einen Client, welche Technik du verwendest (Endung .php, könnte genausogut .html oder ganz was anderes sein).

      Kann mir da jemand erklähren wie das läuft?

      Mit Hilfe von mod_rewrite (wenn die Serversoftware Apache ist), für den IIS gibt's bspw. hier eine Anleitung. Zu mod_rewrite gibt's auch eine deutsche Seite: http://www.modrewrite.de/.

      Siechfred

      1. Moin!

        Aber wie realiere ich das mit der robots.txt und DirectoryIndex?

        Steht alles in SELFHTML im Kapitel <http://de.selfhtml.org/servercgi/index.htm@title=Server, CGI>, wenn ich mich recht erinnere.

        BTW: Als Fleischesser stehe ich nicht so auf TOFU, vor allem nicht zum Frühstück.

        Viele Grüße,
        Robert

  2. hi lyco,
    du kannst in deiner Hauptseite eine Konstante definieren z.B.

    define(included, true)

    und in jeder Seite news.php etc. gucken
    ob diese Konstante definiert ist z.B.

    if(!defined('included'))
    {
     header('LOCATION:index.php?page=home');
    }
    else
    {
     if(included != true)
     {
      header('LOCATION:index.php?page=home');
     }
    }

    so wird dein Besucher aber immer auf die "Home" Seite weitergeleitet
    wenn er z.B. news.php o.ä. aufruft. Das Ganze geht natürlich auch
    mit einer Variablen. Du kannst das Script vllt. so erweitern
    das geguckt wird welche Seite aufgerufen worden ist und jenachdem
    wir dann zu der entsprechenden page weitergeleitet. Tip, in der
    $_SERVER variablen steht der Name der aufegrufenen URL.

    mfg K42B3

    1. Merci ist ein gueter Hinweis

      hi lyco,
      du kannst in deiner Hauptseite eine Konstante definieren z.B.

      define(included, true)

      und in jeder Seite news.php etc. gucken
      ob diese Konstante definiert ist z.B.

      if(!defined('included'))
      {
      header('LOCATION:index.php?page=home');
      }
      else
      {
      if(included != true)
      {
        header('LOCATION:index.php?page=home');
      }
      }

      so wird dein Besucher aber immer auf die "Home" Seite weitergeleitet
      wenn er z.B. news.php o.ä. aufruft. Das Ganze geht natürlich auch
      mit einer Variablen. Du kannst das Script vllt. so erweitern
      das geguckt wird welche Seite aufgerufen worden ist und jenachdem
      wir dann zu der entsprechenden page weitergeleitet. Tip, in der
      $_SERVER variablen steht der Name der aufegrufenen URL.

      mfg K42B3

    2. Moin!

      du kannst in deiner Hauptseite eine Konstante definieren z.B.

      define(included, true)

      und in jeder Seite news.php etc. gucken ob diese Konstante definiert ist z.B.

      if(!defined('included'))
      {
      header('LOCATION:index.php?page=home');
      }

      Schnitt! Die Idee …

      Tip, in der $_SERVER variablen steht der Name der aufegrufenen URL.

      … ist schon einmal gar nicht so schlecht: Du kannst in jeder Seite nachschauen, wie der Aufruf zu Stande kam:

      if ($_SERVER['PHP_SELF'] != '/index.php') {  
          header("Location: {$_SERVER['HTTP_HOST']}/index.php?page=" .  
              basename(__FILE__));  
          exit 0;  
      }
      

      Schönen Mittwoch,
      Robert

      1. Meine erste Probleme

        Ich habe eine Index.php datei erstellt

        Code:
        <?
           if (isset($_GET["page"]))
             $page = $_GET["page"];
           else
             $page = "home";

        echo "<html>\n";
           echo "<body>\n";
           echo "  <table border='0' width='100%'>\n";

        switch ($page)
           {
              case "home"      : include "inc/home.php";     break;
              default          : include "inc/home.php";
           }

        echo "  </table>\n";
           echo "</body>\n";
           echo "</html>\n";
        ?>

        Und eine home.php
        code:
        <?
        if ($_SERVER['PHP_SELF'] != '/index.php') {
            header("Location: /new/index.php?page=" .basename($_SERVER['PHP_SELF'],".php"));
            exit;
        }

        echo "<tr>
               <td>home</td>
           </tr>";
        ?>

        Nun kommt aber immer eine Fehlermeldung und zwar:
        Warning: Cannot modify header information - headers already sent by (output started at /home/public_html/new/index.php:7) in /home/public_html/new/inc/home.php on line 3

        Wie krieg ich die weg?

        1. Moin!

          <?

          Fehlt ^^^ da oben nicht etwas?

          if (isset($_GET["page"]))
               $page = $_GET["page"];
             else
               $page = "home";

          (Randnotiv: Du möchtest an vielen Stellen (auch im Folgenden) wahrscheinlich lieber einfache statt doppelter Anführungszeichen verwenden.)

          echo "<html>\n";
             echo "<body>\n";
             echo "  <table border='0' width='100%'>\n";

          Dafür brauchst du kein echo, sondern kannst wieder in den HTML-Kontext zurückkehren.

          switch ($page)
             {
                case "home"      : include "inc/home.php";     break;
                default          : include "inc/home.php";
             }

          Soweit ich dein Beispiel richtig verstanden habe, ist 'home' doch default, oder? Aber genau an dieser Stelle kommt im Zusammenspiel mit …

          if ($_SERVER['PHP_SELF'] != '/index.php') {

          … logischerweise folgendes Problem, das ich im ersten Moment auch übersehen habe, zum Tragen:

          Warning: Cannot modify header information - headers already sent by (output started at /home/public_html/new/index.php:7) in /home/public_html/new/inc/home.php on line 3

          Kann es sein, dass deine index.php gar nicht mehr über http://www.….de/index.php, sondern mittels http://www.….de/new/index.php aufgerufen wird? Dann musst du nämlich in der Abfrage dies auch entsprechend ändern.

          Schönen Mittwoch,
          Robert

          1. Danke hab es hingekrieg.
            Es klappt bis jetzt ganz ordentlich