[HTML/PHP] Navigation/URL

jbJOGI

Cadet 4th Year
Registriert
März 2004
Beiträge
105
hi,

ich sitze mit nem freund grade an einem neuen projekt für unsere fachschaft in der FH. ich wollte diesmal etwas neues ausprobieren um die seite etwas professioneller wirken zu lassen.

und zwar war ich schon immer von der "navigation" hier auf CB begeistert. genauer gesagt meine ich die links. bei meinen bisherigen seiten war das immer index.php?site=<parameter>
oder bei neueren nur noch ?site=<parameter>. aber hier ist die url zb: computerbase.de/news/hardware/prozessoren/amd/2004/dezember/athlon_64_e0-stepping/

hättet ihr die güte mir euer geheimnis zu verraten? ich habe schon viel überlegt, aber ich komm einfach nicht drauf, wie ihr das macht. wird die domain einfach von nem script aufgeschlüsselt und dann ähnlich, wie man das normalerweise macht, verarbeitet. aber der browser sucht doch bei so einer domain wirklich in den unterordnern nach ner index.*
ich komm einfach nicht drauf, kann mich einer erleuchten? das geht mir echt schon lange nach! :D

gruß,
jbJOGI
 
Das "Geheimnis" nennt sich mod_rewrite und ist eine Funktion vom Webserver. Ich habe das allerdings noch nicht verwendet, kann dir folglich auch nicht sagen, wie man sowas genau macht. Ich kann mich aber noch daran erinnern, dass es schon einige Threads heir im Forum dazu gibt. Ansonsten einfach mal nach googlen.
 
durch eine .htaccess Datei die sich auf dem Server befindet, mod_rewrite ist z.B. sehr gut wenn mann eine Suchmaschinen freundliche Seite machen will, benötigt allerdings mehr Rechenzeit als dies Ohne mod_rewrite der fall ist.
 
und wie viel rechenzeit? ich glaube hier ueberwiegt der komfort fuer den user doch erheblich.
 
Die benötigte Rechenzeit dürfte ziemlich unerheblich sein, denn es ist einfach nur ein einziger RegExp, der die URL einliest und umwandelt. Ausserdem: Wenn sich solch frequentierte Seiten wie ComputerBase das leisten können, gibt es eigentlich keinen Grund, darauf wegen einer womöglich verbesserten Rechenzeit zu verzichten.
 
Man kann auch einfach Dateien ohne Endung benutzen, ihnen per .htaccess die Eigenschaften von PHP-Dateien zuweisen und in diesen dann den Fortlauf der URL nach dem Dateinamen auswerten.

So löse ich das immer :-)
 
hi,

vielen dank für die antworten und hinweise auf die suchfunktion! ;)


allerdings verzweifel ich nun bald dran!

ich benutze den apache2 mit php5.0 auf nem windows2003server. das ganze läuft als dienst.

nun soll man folgende einträge in der httpd.conf des apaches auf folgende werte ändern:

Code:
LoadModule rewrite_module modules/mod_rewrite.so

AllowOverride FileInfo

hab ich also beides gemacht. wenn ich nun eine info.php aufrufe, dann wird mir mod_rewrite auch unter den geladenen modulen aufgelistet.

ich bekomms aber einfach nicht zum laufen!

bsp:

ich hab irgendwo in meinem document_root den ordner test/ und darin die index.php

nun lege ich eine .htaccess datei in den test/ ordner und schreibe folgendes rein:

Code:
RewriteEngine on
RewriteRule index.html$ index.php [PT]

ich bekommen aber immer nur nen 404, der rewrite funzt nicht! und das war ein wirklich einfaches beispiel 1zu1 von einem tut: link

hat einer vielleicht noch ne idee, was ich falsch gemacht haben könnte? was habt ihr denn in der httpd.conf stehen, wenn ihr einfach mal nach mod_rewrite sucht?
 
ok, hab den fehler gefunden!

in der httpd.conf gab es 2 einträge für AllowOverride
ichhab den alleinstehenden bearbeitet und
Code:
<Directory />
    ....
    AllowOverride None
</Directory>
übersehen. funzt aber irgenwie nur, wenn ich das auf All setze.... naja, was solls.


nun gehen die rewrite rules endlich!

allerdings stellt sich mir ein neues problem:
Code:
RewriteRule ^(Klausuren/.*).html$ index.php?site=klausuren&pfad=$1/

diese regel leitet zb die URL
http://meine_ip/Jochen/Studentenschaft/Klausuren/IN/BWL 1.html
um nach
http://meine_ip/Jochen/Studentenschaft/index.php?site=klausuren&pfad=Klausuren/IN/BWL 1

leider sucht er nun die bilder, die in index.php eingebaut sind, nichtmehr in
http://meine_ip/Jochen/Studentenschaft/img/...
sondern in
http://meine_ip/Jochen/Studentenschaft/Klausuren/IN/img/...

was kann man hiergegen tun? gibt es ne andere lösung außer absolute pfade für die bilder zu verwenden? das wäre absolut zu umständlich!
 
update! :D

habe nun eine lösung für das problem mit den relativen pfaden gefunden:
Code:
<head>
  <base href="http://meine_ip/Jochen/Studentenschaft/">
  ...
hiermit kann man die "relativen pfade" ergänzen, oder den pfad bis dahin angeben


das ganze war mir aber zu statisch. also habe ich nach viel gebastel folgende lösung gefunden:
Code:
<head>
    <base href="<?php echo $_GET["base"];?>">
    ...
und in der .htaccess
RewriteRule Klausuren/(.*)\.html$
Code:
RewriteRule Klausuren/(.*)\.html$ index.php?site=klausuren&base=http://192.168.0.5/Jochen/Studentenschaft/&pfad=Klausuren/$1/

ist zwar immer noch nicht das optimum, aber ich weis nicht, wie man den pfad vor Klausuren/... mit der .htaccess abfangen kann.
 

Ähnliche Themen

Zurück
Oben