[mod_rewrite] Bilder werden nicht angezeigt - Keine Funktion

hemorieder

Lieutenant
Registriert
März 2003
Beiträge
652
Hey,

ich habe folgendes Problem mit meiner Seite bzw mit der mod_rewrite:

Situation:

Der Originallink sieht so aus

Code:
index.php?la=de&cf=0&main=news
oder
index.php?la=de&cf=0&main=news&seite=2
oder
index.php?la=de&cf=0&main=artikel&detail=der_bestimme_artikel

ziel ist folgendes schema:

Code:
www.blabla.de/de/0/news
oder
www.blabla.de/de/0/news/2
oder
www.blabla.de/de/0/artikel/der_bestimmte_artikel

dazu habe ich folgende mod_rewrite geschrieben und natürlich in die .htaccess geschrieben

Code:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/(bilder|img|css|js|config)
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)$ /index.php?la=$1&cf=$2&main=$3&detail=$4&seite=$5 [L]
ErrorDocument 404 /index.php

Ich sehe selber das Problem das das ansich nicht stimmig ist mit der Seite und dem Detail.
Leider steige ich da auch logisch auch nicht hinter, wie ich diese Variabel mit einbaue....

Das Ergebnis ist jedenfalls, dass es erstmal nicht funktioniert, dass heißt ich klicke, die url ändert sich, aber nicht der content ?

wäre toll wenn mir jemand helfen könnte :)

lg
 
Zuletzt bearbeitet: (1. Problem bereits gelöst :))
Also meine Bilder binde ich so ein:
<img src="/bilder/1.jpg">
Keine URL oder so, den Slash kannst du mal setzen und schauen, damit der Pfad relativ zum Server ist.

Was passiert denn, wenn du sowas:
RewriteCond %{REQUEST_URI} !-d
RewriteCond %{REQUEST_URI} !-f
Statt dem:
RewriteCond %{REQUEST_URI} !^/(bilder|img|css|js|config)
nimmst. Ich weiß auch nicht genau was du da haben willst vtl. kannst du ja auch .jpg und .css etc. ausschließen oder soll ds der komplette bilder Ordner sein?
 
@NoXPhasma
Dankeee !!! Das hat funktioniert, die Bilder sind nun zu sehen!

Also das Bilderproblem existiert somit nicht mehr :)


Leider noch das andere mit dem mod_rewrite ansich... :(

Ideen ?
 
edit. ok vergiss das: Wie sehen denn die Links aus, die du in deinem Qelltext setzt?
steht ja ganz oben und mit den base href oder links begiinnend mit / solte das passen.


Mach mal noch backslashes vor die Punkte, die Punkte sein solllen z.B. \.php
 
Zuletzt bearbeitet:
wie meinst du das ?

aktuell sind die links im quelltext ja so wie ich sie haben möchte, also in der basiversion

Code:
<a href="de/0/news">

oder hab ich es jetzt komplett falsch verstanden bei mod_rewrite und ich kann meine links "alt" lassen und der wandelt die für mich um ?

also aus

Code:
<a href="index.php?la=de&cf=0&main=news">

wird automatisch

Code:
de/0/news

oder was meins du ?
 
Nein ersteres passt, so wies aussehen soll stehts auch in den Links.
Versuch doch erstmal was einfaches. Normal ist deine Website über domain.de und www.domain.de zu erreichen. Du kannst das umleiten, damit nur eins benutzt wird.
Das sollte alles auf www. umleiten:
--------
RewriteEngine On
RewriteBase /
Options +FollowSymlinks

RewriteCond %{HTTP_HOST} !^www\.domain\.de$
RewriteRule ^(.*)$ http://www\.domain\.de/$1 [R=301,L]
------------

kannst du mal testen. Ich setz vor die Punkte immer backslashes. Ist wohl nicht immer überall nötig aber bei mir lief das so immer am besten. Der Punkt . kann nämlich als regulärer Ausdruck auch für ein beliebiges Zeichen stehen.
 
soooo, also ich habe nebenbei etwas bei mir verändert, jetzt ist die Situation glaub ich einfacher zu lösen

so sieht die rule gerade aus

Code:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/(_admin|bilder|img|css|js|config)
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)$ /index.php?la=$1&cf=$2&main=$3&detail=$4[L]
ErrorDocument 404 /index.php

das funktioniert auch, allerdings NUR wenn immer ein "&detail=XYZ" dabei ist, auch wenn keins benötigt wird, also:

Code:
www.blabla.de/de/0/news         --> geht nicht
www.blabla.de/de/0/news/0      --> geht

das gibt ja auch sinn, weil ich ja nach der vierten Variabel frage.
Allerdings muss es doch möglich sein zu sagen, wenn "detail="XYZ" dabei ist, dann benutz es auch, und wenn nicht, dann halt nicht...

wenn du/ihr versteht was ich meine ?
 
Vermutlich will er die Slashes noch? Kannst mal testen ob ->www.blabla.de/de/0/news/ <- geht.
Du kannst das so machen, ist halt lang, Vorteil du kannst das alles anpassen, auch wenn du mal nicht mehr nur "la" "cf" "main" etc. hast sondern jetzt "la" "bla" "blub" und "main" willst... allderdings wird das schnell unübersichtlich.

RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)$ /index.php?la=$1&cf=$2&main=$3&detail=$4[L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ /index.php?la=$1&cf=$2&main=$3[L]
RewriteRule ^([^/]*)/([^/]*) /index.php?la=$1&cf=$2[L]
RewriteRule ^([^/]*)$ /index.php?la=$[L]

Man kann das auch rekursiv machen mit [N], dann wird das kurz allerdings musst du dann auf endlosschleifen achten. Der Vorteil wäre du kannst später beliebig viele neue Parameter übergeben. Oder du schreibst deinen Ausdruck um.

Muss dir aber sagen ich geh dem meist auch aus dem weg ich bastel das bis es funktioniert und dann is gut. Gibt sicher Leute die das 1000 mal besser können.
 
Zurück
Oben