homepage aufbau
lyco
- php
0 Siechfred0 K42B30 lyco0 Robert Bienert0 lyco0 Robert Bienert0 lyco
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?
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
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
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
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
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
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
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?
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
Danke hab es hingekrieg.
Es klappt bis jetzt ganz ordentlich