mod_rewrite

sh1t0R

Aktives Mitglied
ich habe beim erstellen einer neuen seite die technik mit dem mod rewrite angewendet.
und dafuer habe ich natuerlich eine .htaccess datei gemacht.

so sieht meine .htacces datei atm aus:
CODE # Navigation
RewriteRule news$ index.php
RewriteRule team$ index.php?go=team
RewriteRule matches$ index.php?go=matches
RewriteRule awards$ index.php?go=awards
RewriteRule book$ index.php?go=book
RewriteRule misc$ index.php?go=misc
RewriteRule contact$ index.php?go=contact


bei diesen dynamischen links:

index.php?go=team
wird erfolgreich zu /team

index.php?go=matches
wird erfolgreich zu /matches

etc.

aber nun moechte ich bei den news welches /news ist, noch ein link fuer die newsdetails haben. d.h. wenn man bei einer news auf "mehr lesen" klickt, sollte man im hintergrund auf "index.php?go=newsdetails&newsid=$newsid" gelangen, in der adressleiste moechte ich dass "news/$newsid" steht.
wie geht die korrekte rule fuer das?? ich habe es schon mit dem versucht, was aber nicht funktioniert
sad.gif



CODE # Newsdetails
RewriteRule ^news/([0-9]+)$ index.php?go=details&newsid=$1


verlinkt habe ich das uebrigens so:

CODE href='news/$newsid'


koennt ihr mir pls weiterhelfen?
 
QUOTE RewriteRule ^news/(.\d*)$ index.php?go=newsdetails&newsid=$1

für nur Zahlen \d=dezimal bzw

QUOTE RewriteRule ^news/(.*)$ index.php?go=newsdetails&newsid=$1

für alle beliebigen Zeichen.

Regexp: [x-y] ist eine Klasse eben z.B. [0-9], dazu braucht es noch eine Häufigkeit. + heisst 1 oder mehrmals. d.h. deine Regel war korrekt. Ich hab nur intuitiv \d verwendet. Deine Regel besagt, von 0-99999999999999.....9 wird alles verstanden.

Evtl. liegt der Fehler bei go=details != go=newsdetails
 
das problem liegt auf der hand: du bindest ein externes css stylesheet ein, dessen pfad relativ von der angezeigten seite ist:

CODE <link rel="stylesheet" type="text/css" href="style.css" />


wenn du http://www.shitcat.com/new/news aufrufst, dann wird das stylesheet unter http://www.shitcat.com/new/style.css gesucht, was auch funktioniert.

sobald du aber auf http://www.shitcat.com/new/news/3 gehst, wird das stylesheet unter http://www.shitcat.com/new/news/style.css gesucht, welches aber natürlich nicht existiert.

nun musst du einen weg finden, wie immer der richtige pfad angegeben wird für style.css. am besten gibst du den pfad absolut an, irgendwie mit /public_html/shitcat/new/style.css oder wie auch immer. am besten schreibst du den code aber nicht hardkodiert, sonst musst du ihn auf jedem neuen server wieder anpassen. ermittle ihn z.b. mit einer funktion wie


CODE function getStylePath() {
return dirname(__file__);
}


oder sowas in der art, je nachdem von wo du die funktion dann aufrufen wirst.
smile.gif


hoffe das hilft! gruss josh
 
Hi, ich kann Dir zwar nicht helfen, (Bahnhof?) aber ich wollte Dir nur mal sagen, dass Dein Design


********* GENIAL ***********


ist ! Wahnsinn! Super!
 
mit dem absoluten stylesheet pfad geht das nur so halb.
die fonts etc werden uebernommen aber die bilder etc nicht.

hm
wacko.gif
 
@ memoriam: bitte verwende zukünftig für lobeshymnen die private nachrichten funktion!
wink.gif


@ shitor:
klar, die bilder haben ja auch einen eigenen pfad! dieser ist nicht im stylesheet angegeben (logisch!), also musst du im quelltext deren pfad mit derselben funktion anpassen!
tongue.gif
 
dry.gif
naja ist eigentlich logisch, aber kommt sehr undynamisch rueber
biggrin.gif


@memorian
thx!!
 
wenn ich mal server wechsle
biggrin.gif

bei meinen wenigen bildern zwar keine grosse sache, aber bei mehreren bildern ..
 
das kommt ja eben nicht darauf an, wenn du eine *funktion* programmierst, die dir den absoluten pfad erstellt! die wird auf *jedem* server laufen, wie ich schon erwähnt habe.
 
CODE Unknown column 'addedcomment' in 'where clause'


immer wenn ich bei den kommentar formular "comment!" schicke kommt diese Fehlermeldung.

beim formular habe ich als action natuerlich
CODE action="addedcomment"
angegeben, und im .htaccess steht dies:
CODE RewriteRule ^news/addedcomment$ index.php?go=aacomment


im index file:

CODE case 'aacomment':
include("show/news/addedcomment.php");
break;


ich habe alles probiert, aber es will einfach nicht, weisst du warum??
PS: bei dem habe ich das gleiche gemacht, dort funzts, aber da bei den kommentaren nicht!
sad.gif
 
Zurück
Oben