zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden Meine ersten mod_rewrite Versuche

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 30.04.2005, 12:13
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 28.11.2004
Beiträge: 547
lomtas befindet sich auf einem aufstrebenden Ast
Standard Meine ersten mod_rewrite Versuche

Hallo,

ich versuche mich gerade mit mod_rewrite anzufreunden. Nun habe ich als test eine kleine Seite, die fünf seiten hat. Möchte dafür, dass jede seite in einem unterordner dargestellt wird.
Code:
DirectoryIndex index.php?id=1

RewriteEngine on
RewriteRule /index.html index.php?id=1
RewriteRule dienstleistungen/index.html index.php?id=2
RewriteRule referenzen/index.html index.php?id=3
RewriteRule kontakt/index.html index.php?id=4
RewriteRule imressum/index.html index.php?id=5
So siehts momentan aus. Wie ihr aber sicher schon gemerkt habt, wird so jede index.html auf index.php?id=1 umgeleitet. Wie kann ich eine Regel erstellen, die nur greift, wenn die index.html aus dem docroot aufgerufen wurde?
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 30.04.2005, 12:34
Benutzerbild von Gumbo
XHTMLforum-Kenner
 
Registriert seit: 22.08.2004
Ort: Trier
Beiträge: 2.733
Gumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekannt
Standard

Normalerweise werden Rewrite-Regeln mit der Reihenfolge vom speziellen zum allgemeinen geordnet. Auch könntest du es mit speziellen Zeichen von regulären Ausdrücken versuchen:
Code:
DirectoryIndex index.php?id=1

RewriteEngine  on
RewriteRule    ^/index.html$                   index.php?id=1
RewriteRule    ^dienstleistungen/index.html$   index.php?id=2
RewriteRule    ^referenzen/index.html$         index.php?id=3
RewriteRule    ^kontakt/index.html$            index.php?id=4
RewriteRule    ^imressum/index.html$           index.php?id=5
Gutes URL-Design = halber Erfolg
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 30.04.2005, 16:43
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 18.01.2005
Beiträge: 696
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

ich würde hier evtl. gar nicht mit nummerischen IDs arbeiten - sondern direkt den "verzeichnisnamen", wenn vorhanden, als parameter übergeben.

dann könntest du eigentlich einfach alles, was ggf. vor /index.html steht, an index.php übergeben - würde dann auf
index.php?id=dienstleistungen
index.php?id=referenzen
etc. herauslaufen.

und für die index.html aus dem root ergibt sich dann einfach
index.php?id=

darauf im script zu reagieren, sollte kaum einen unterschied zu nummerischen IDs machen - und es ließe sich alles mit einer einzigen rule erschlagen.
Mit Zitat antworten
  #4 (permalink)  
Alt 02.05.2005, 00:48
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 28.11.2004
Beiträge: 547
lomtas befindet sich auf einem aufstrebenden Ast
Standard

ja, das hört sich für mich sehr sinnvoll an!
als ich aber die Seite programmiert habe, hatte ich noch keinen blassen Schimmer von mod_rewrite.... Habe mich jetzt erst mal daran gesetzt und finde es total interessant (und zeitaufwendig am Anfang... *g*) Aber danke für den Tip. Damit werde ich es dann auch noch mal versuchen... Nur wer rumspielt kann dabei was lernen
Mit Zitat antworten
  #5 (permalink)  
Alt 02.05.2005, 01:20
Benutzerbild von netspy
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 13.08.2004
Ort: Leipzig
Beiträge: 1.953
netspy sorgt für eine eindrucksvolle Atmosphärenetspy sorgt für eine eindrucksvolle Atmosphäre
Standard

Nur mal so als Anregung: Anstatt www.example.com/dienstleistungen/index.html würde ich eher www.example.com/dienstleistungen schreiben. Schließlich ist bei dir /dienstleistungen ja kein Unterordner, sondern ein Dokument. Die Endung .html oder ein /index.html ist überflüssig und macht die URL nur unnötig lang. Ich würde es deshalb auch so machen:

Code:
RewriteRule    ^dienstleistungen	/index.php?id=2 [NC,L]
Hiermit kannst du noch dafür sorgen, dass alle index.html zum Dokumentnamen zurückgeleitet werden.
Code:
RewriteRule    ^([\w\-]+)/index.html	/$1 [R=301,L]
Aber Vorsicht damit! Der Ausdruck könne auch nicht gewollte Umleitungen vornehmen, je nachdem wie die Struktur deiner Seite ist und welche anderen Unterseiten es noch gibt.

Mario
__________________
AppDev Blog · AppDev Forum
Mit Zitat antworten
  #6 (permalink)  
Alt 02.05.2005, 09:54
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 28.11.2004
Beiträge: 547
lomtas befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von netspy
Nur mal so als Anregung: Anstatt www.example.com/dienstleistungen/index.html würde ich eher www.example.com/dienstleistungen schreiben.
da bin ich inzwischen selber drauf gekommen *stolzsei*
Zitat:
Code:
RewriteRule    ^dienstleistungen	/index.php?id=2 [NC,L]
Was ist der Unterschied dazu:
Code:
RewriteRule    ^dienstleistungen$	/index.php?id=2 [NC,L]
Mit Zitat antworten
  #7 (permalink)  
Alt 02.05.2005, 11:35
Benutzerbild von derHund
durstiges Tier
XHTMLforum-Mitglied
 
Registriert seit: 16.09.2004
Beiträge: 869
derHund befindet sich auf einem aufstrebenden Ast
Standard

das $ symbolisiert das ende des strings, es darf dort also praktisch nix mehr hinterstehen.

^huhn$ trifft nur auf zeichenketten zu, die auch wirklich auf huhn ende, und auch damit beginnen

^huhn trifft auf alles zu, wo huhn am anfang steht, also huhn, huhner, etc.

$ und ^ sind (kleine) assertions, die dadurch charakterisiert sind, daß sie eine bestimmte bedingung beschreiben, selbst aber im suchstring nicht auftauchen - es befindet sich sich ja kein $ am ende.
__________________
Die Zeit hat ihre Kinder längst gefressen: hund (back in black) | ??? | ??? | ...
Mit Zitat antworten
  #8 (permalink)  
Alt 02.05.2005, 13:18
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 28.11.2004
Beiträge: 547
lomtas befindet sich auf einem aufstrebenden Ast
Standard

ich hatte jetzt (nicht lokal aber auf dem Server [gehostet bei all-inkl]) das Problem, dass er bei folgender .htaccess
Code:
DirectoryIndex index.php?id=1

RewriteEngine  on
RewriteRule    ^dienstleistungen.*$   /index.php?id=2 [L]
RewriteRule    ^referenzen.*$         /index.php?id=3 [L]
RewriteRule    ^kontakt.*$            /index.php?id=4 [L]
RewriteRule    ^impressum.*$          /index.php?id=5 [L]
RewriteRule    ^index.html$          /index.php?id=1 [L]
meine Bilder nicht mehr mitgeladen hat, die den gleichen namen trugen (also dienstleistungen.jpg, referenzen.jpg...) wie gesagt - lokal hat alles funktioniert. nur auf dem server nicht. Da sagte man mir in einer mail von all-inkl, dass das am .* liegen würde. Als ich das entfernte ging gar nichts mehr...
Also fragte ich noch mal nach, dann bekam ich folgende Antwort:
Zitat:
Zitat von all-inkl
in der Form ist eine Umsetzung leider nicht moeglich. Die Rewrite Engine versucht die aufgerufene URL auf die entsprechende Datei zu dezimieren. Diesem Prozess fällt auch Ihr Ordner "dienstleistungen" zum Opfer. Dadurch haben Sie keine Moeglichkeit auf den Ordner der URL zu suchen. Sie muessten in diesem Fall wirklich davon Abstand nehmen den Namen des Bildes gleich dem umzuleteinden Ordnernamen zu wählen.
Das fand ich doch sehr interessant und irgendwie unwirklich. Ist das die Wahrheit? Weil dann bekommt man doch mit solchen CMS-gesteuerten Systemen probleme, wenn die auf einmal aus versehen einen Menüpunkt erstellen, der den gleichen Namen hat, wie ein Bild, was für das Layout gebraucht wird... Mich iritiert das ein wenig.
Mit Zitat antworten
  #9 (permalink)  
Alt 02.05.2005, 13:40
Benutzerbild von derHund
durstiges Tier
XHTMLforum-Mitglied
 
Registriert seit: 16.09.2004
Beiträge: 869
derHund befindet sich auf einem aufstrebenden Ast
Standard

hmm,

ich verstehe nicht ganz, was dein proiblem ist ... laß doch die .* einfach weg? oder was beabsichtigst du damit?

schreibe mal bitte genau, was du wie umgesetzt haben willst ... die sprache dahinter ist so mächtig, daß sich praktisch alles beschreiben läßt. man (ich) muß nur wissen, was überhaupt sein soll ...
__________________
Die Zeit hat ihre Kinder längst gefressen: hund (back in black) | ??? | ??? | ...
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 02.05.2005, 13:57
Benutzerbild von netspy
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 13.08.2004
Ort: Leipzig
Beiträge: 1.953
netspy sorgt für eine eindrucksvolle Atmosphärenetspy sorgt für eine eindrucksvolle Atmosphäre
Standard

Was passiert denn, wenn du wie schon vorgeschlangen das hier schreibst?

Code:
RewriteEngine  on
RewriteRule    ^dienstleistungen   /index.php?id=2 [L]
Da deine Bilder ja mit img_ anfangen (besser wäre es, wenn sie in einem extra Ordner liegen würden), greift diese Regel nicht bei den Bildern.

Mario
__________________
AppDev Blog · AppDev Forum
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Layout Probleme SchwarzerMagier CSS 18 01.08.2006 14:06
Erste Versuche mit CSS-Positionierung - Probleme ralf111 CSS 0 27.11.2005 14:29
CSS-Layout bitte Prüfen. meine Ersten Versuche löffi Site- und Layoutcheck 29 22.01.2005 16:57
Schriftgröße fixieren terminator2k3 CSS 5 12.06.2004 13:40


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:09 Uhr.