Suchmaschinen gerechte Links

Alles, was PHP betrifft, kann hier besprochen werden.

Suchmaschinen gerechte Links

Postby Bossi » 04. February 2004 15:31

Hallo...
leider finde ich in meinen milliarden bookmarks den link nicht mehr, wie man adressen a la
:arrow: index.php?news=soccer&runde=8&tabelle=1
suchmaschinen gerecht zerlegt, damit die als "echte" struktur angezeigt werden (auch in der browser adresszeile) a la
:arrow: index.php/news/soccer/runde/8/tabelle/1

ich weiß nur noch, daß man etwas in die .htaccess eintragen muß und mit "explode" die adresse zerlegt.. aber ich bekomms nicht mehr zusammen :oops:
hat das jemand zufällig griffbereit? google spuckt nur dreck aus, weil die suchbegriffe für das problem so blöd sind, daß man alles findet nur nicht das, was man sucht :evil:
TIA (thanks in advance - für diejenigen, denen das nicht bekannt ist)
8) .. Gruß Bossi .. 8)
*****************
User avatar
Bossi
 
Posts: 100
Joined: 26. August 2003 08:25
Location: Kaiserslautern

Postby Toralf » 04. February 2004 15:45

guck mal nach mod rewrite

das dürfte dir weiterhelfen...
Toralf
 
Posts: 33
Joined: 15. June 2003 18:27

Postby Bossi » 04. February 2004 16:03

thx ich schau mal was ich dazu finde... obwohl das gerade keinen groschen bei mir fallen läßt (soll heißen, die methode die ich such war glaub ne andere)
8) .. Gruß Bossi .. 8)
*****************
User avatar
Bossi
 
Posts: 100
Joined: 26. August 2003 08:25
Location: Kaiserslautern

Postby Stefan » 05. February 2004 15:47

Grüß Dich Bossi,

kannst Du damit was anfangen?
Code: Select all

<?PHP
error_reporting(E_ALL);

/* bsp Pfad -> http://domain.tld/datei.php/id/1/user/stefan */

/**
 * getenv('PATH_INFO') enthält Teil den Du brauchst
 */
 echo "getenv('PATH_INFO') -> ".getenv('PATH_INFO');
 echo "<br>";

/**
 * ACHTUNG:
 * Die "$_SERVER['PHP_SELF']" Ausgabe wird mit dieser Methode "dat.php/blah/blah"
 * "verfälscht" und enthält den ganzen Anhang.
 */
 echo '$_SERVER[\'PHP_SELF\'] -> '.$_SERVER['PHP_SELF'];
 echo "<br>";

/**
 * Die Datei selbst was PHP_SELF ja ausgeben soll,
 * erhältes Du folglich wenn Du "getenv('PATH_INFO')" aus "$_SERVER['PHP_SELF']"
 * heraus schneidest.
 */
 $PHP_SELF = str_replace(getenv('PATH_INFO'), '', $_SERVER['PHP_SELF']);
 echo "PHP_SELF korrigiert -> ".$PHP_SELF;

 echo "<br><br>";

/**
 * Wenn keine Übergabe gemacht wurde (z.B URL manipuliert),
 * Dann steige aus, bevor es Fehlermeldungen hagelt.
 * ACHTUNG: Natürlich ist das sehr mangelhaft falls nur Teile
 * der URL manipuliert wurden.
 * Man könnte es auch verwenden, um festzusellen, ob solche Parameter
 * überhaupt geschickt wurden um darin den code zur Verarbeitung auch
 * erst zu starten. Dann müsste es anderst herum sein
 *
 * if (strlen(getenv('PATH_INFO')) > 1)
 *   { Zerlegungscode }
 */
 if (strlen(getenv('PATH_INFO')) < 1)
   die("keine brauchbar Übergabe"); // die(include('standart.inc'));


/**
 * entferne aus "getenv('PATH_INFO')" den letzten slash falls vorhanden,
 * da sonst ein leerer $_GET Wert entsteht.
 * z.B "datei.php/id/1/"
 * $_GET[id] = '1'
 * $_GET[user] = 'stefan'
 * $_GET[] = ''
 */
 $pfad = eregi_replace("/$","",substr(getenv('PATH_INFO'), 1));

/**
 * Zerlegen der Zeichenkette anhand des "/"
 */
 $vars = explode('/',$pfad);

/**
 * Auslesen der Elemente
 * Wenn Du ein kleines Projekt hast, in dem diese Werte
 * wenig in der Anzahl und somit übersichtlich sind, kann
 * man damit auch schon was anfangen.
 *
 * z.B "datei.php/id/wert/user/stefan"
 * $vars[0] == "id"
 * $vars[1] == "wert"
 * $vars[2] == "user"
 * $vars[3] == "stefan"
 */
 for($i=0;$i<count($vars);$i++)
   echo '$vars['.$i.'] = '.$vars[$i].' | ';
    echo"<br><br>";

/**
 * Vielleicht willst Du den Arrayinhalt wieder zurück verwandeln
 * in das $_GET Array mit den passenden Werten?
 * Dann schaufle die Daten in das $_GET Array.
 */
 for ($i=0;$i<count($vars); $i++):
   $_GET[$vars[$i]] = $vars[$i+1];
   $i++;
 endfor;

// Zeig Dich!
while (list($key, $value) = each($_GET))
  echo 'Inhalt von $_GET['. $key .'] = '.$value.'<br>';

// Im weiteren Verlauf des Sripts kannst Du wie gewohnt auf
// das $_GET Array zugreifen.
// z.B echo $_GET[user]
?>




Aber vorsicht, das ist eben aus meinen Kopf gekommen und nicht auf
Stabilität oder Sicherheit geprüft, vermutlich werden sich die Schwächen ergeben, wenn Du es mal unter richtigen Bedingungen testest.
(Was ich übrigens auch tun werde. Danke für den Anstoß)
Sei doch so nett und unterichte mich, wenn irgendwie Schwierigkeiten auftauchen.

beste Grüße
Stefan
User avatar
Stefan
 
Posts: 475
Joined: 26. December 2002 22:36
Location: Mitten in der sonnigen Südpfalz

Postby Bossi » 05. February 2004 16:08

Howdy ...
danke für deine mühe. ich werd mir das heute abend oder morgen mal reinziehen.
hab noch was dazu gefunden, wenn es auch nicht das war, was ich mal gebookmarked habe.
:arrow: Suchmaschinen freundliche Links
sollte es wirklich so einfach gewesen sein? wenn ja, dann stell ich mich aber in die ecke und schäm mich, weil ich das nicht mehr zusammen bekommen hab :oops:

[EDIT]
Toralf hatte aber wohl recht. Die lösung mit mod_rewrite scheint die elegantere zu sein.
:arrow: Statische Seiten simulieren
der link ist zwar für das CMS Typo3 gedacht aber das ist ja wohl allgemein gültig :)
Also wenn man weiß nach was man suchen muß, dann gibts auch links dazu ^^
www.google.de und nach "php statische seiten simulieren"
[EDIT]
8) .. Gruß Bossi .. 8)
*****************
User avatar
Bossi
 
Posts: 100
Joined: 26. August 2003 08:25
Location: Kaiserslautern

Postby Toralf » 05. February 2004 16:24

nebenbei sorgt mod rewrite für übersichtlicheren code, da man doch etwas obacht geben muss in welcher reihenfolge man die argumente angibt *ausser du arbeitest mit regexp. was doch sehr lustig ist*.

Nebenbei akzeptiert google eh wieder .php? links, man hat wohl nen geschickteren parser geschrieben der sich nicht in eine schleife reinhaut bei php seiten :D Von daher wäre die Mühe, eine statische Seite zu schreiben etwas übertrieben. Aber es fetzt wenn man seinen usern ca. 8000 html files vorgaukeln kann und dabei isses ein lächerliches php script :D
Toralf
 
Posts: 33
Joined: 15. June 2003 18:27

Postby Bossi » 05. February 2004 16:33

Hallo Toralf ...
eben das meinte ich mit "deine mod_rewrite methode ist die elegantere".. man entledigt sich einfach des zusätzlichen codes.
der hintergrund dieser statischen seiten ist neben der suchmaschine vor allem auch der site-besucher. besonders bei (großen) news-seiten laßen sich besser artikel anhand der adresse merken und das nachträgliche direkte eintippen der adresse gestaltet sich einfacher für den user.. und nicht zuletzt sieht es einfach "sauberer" aus :)
8) .. Gruß Bossi .. 8)
*****************
User avatar
Bossi
 
Posts: 100
Joined: 26. August 2003 08:25
Location: Kaiserslautern

Postby Stefan » 05. February 2004 18:48

Hi,

Toralf wrote:nebenbei sorgt mod rewrite für übersichtlicheren code, da man doch etwas obacht geben muss in welcher reihenfolge man die argumente angibt *ausser du arbeitest mit regexp. was doch sehr lustig ist*.


Da kann ich nur zustimmen. Allerding bereiten rewrite Regeln auch ganz schön freude, wenn es mal über triviale Anforderungen hinausgeht.

Gruß
Stefan
User avatar
Stefan
 
Posts: 475
Joined: 26. December 2002 22:36
Location: Mitten in der sonnigen Südpfalz

Postby Shoukri » 06. February 2004 23:07

Falls es noch jemanden interessiert: meine .htaccess mit meinen rewrite regeln:

Code: Select all
#
# Bilderklau verhindern
#
#
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?sub.domain\.com(/.*)?$ [NC]   
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain\.com(/.*)?$ [NC]   

RewriteRule \.(gif|jpg|GIF|JPG|png|PNG|jpeg|JPEG)$ http://domain.com/gfx/stolen.gif [R,L]

#
# Fehlerdokumente bestimmen
#
ErrorDocument 404 /404/error
ErrorDocument 403 /403/error
ErrorDocument 500 /500/error

#
# Suchmaschinenfreundlichekeit
#
#
RewriteBase /
RewriteRule (.*)/(.*)/(.*)/c$ index.php?c=$1&p=$2&exec=$3
RewriteRule (.*)/(.*)/img$ bild.php?image=$1&mode=$2
RewriteRule (.*)/(.*)/x$ index.php?c=$1&p=$2
RewriteRule (.*)/pid$ index.php?pid=$1
RewriteRule (.*)/error$ index.php?c=errors&p=$1


zu den rewrite regeln (suchmaschinen)
1) ruft die inhalte über domain.com/home/index/para/c auf ...
2) ruft die inhalte über domain.com/bild/jpg/img auf und leitet sie an ein script weiter das ein wasserzeichen draufsetzt
3) ruft die inhalte über domain.com/xxx/pid auf und leitet zu regel 1 weiter
die letze steht einfach für die fehlermeldungen *g*
User avatar
Shoukri
 
Posts: 76
Joined: 29. October 2003 00:25

Postby Bossi » 06. February 2004 23:19

Shoukri wrote:Falls es noch jemanden interessiert: meine .htaccess mit meinen rewrite regeln.....


na aber hallo - klar interessiert es! und wenn's nur für zukünftige tipparbeit ersparnis ist ;) .. c&p (copy and paste) und zack, schon ist das ding in der sammlung der nützlichen helferlein gelandet 8)
8) .. Gruß Bossi .. 8)
*****************
User avatar
Bossi
 
Posts: 100
Joined: 26. August 2003 08:25
Location: Kaiserslautern


Return to PHP

Who is online

Users browsing this forum: No registered users and 8 guests