Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

mod rewrite

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
swordi
PostRank 1
PostRank 1
Beiträge: 5
Registriert: 25.08.2008, 14:51

Beitrag von swordi » 25.08.2008, 14:55

hallo,

check das mod_rewrite zeugs nicht wirklich. vielleicht kann mir hier jemand helfen.

ich habe folgende verzeichnisse:

/
/maps
/css
index.php
/mobil
/xxx

und ich möchte jetzt urls in der form von

domain.com/maps/produkte/bier

benutzen

in maps/index.php möchte ich alles was nach /maps/ kommt als variable bekommen um das dann zu parsen und damit etwas lustiges zu machen

also nochmal kurz zusammengefasst

alles was nach maps/ kommt soll in einer variable in der index.php verfügbar sein


danke schonmal für eure hilfe

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Mork vom Ork
PostRank 9
PostRank 9
Beiträge: 2557
Registriert: 08.07.2008, 11:07
Wohnort: Aufm Friedhof.

Beitrag von Mork vom Ork » 25.08.2008, 16:21

swordi hat geschrieben:/maps/produkte/bier

in maps/index.php möchte ich alles was nach /maps/ kommt als variable bekommen [Ausnahme: /maps/css/]
In /maps/.htaccess:

Code: Alles auswählen

RewriteEngine on
RewriteBase /maps
RewriteCond %{SCRIPT_FILENAME} !/index\.php$
RewriteCond %{REQUEST_URI} !^/maps/css/
RewriteRule (.*) index.php?url=$1
Mit der RewriteRule-Zeile werden pauschal alle Anfragen (das Muster .* passt auf alles) umgeschrieben in index.php?url=$1, wobei $1 für den Inhalt der ersten runden Klammer im Muster steht, hier also der angefragte Pfad. Dem Aufruf von index.php wird somit der angefragte Pfad als Parameter url übergeben, /maps/bla/fasel würde intern als /maps/index.php?url=bla/fasel verarbeitet werden.
In index.php findest du diesen Parameter in der Variablen $_GET["url"] wieder.

Nachdem eine URL vollständig bearbeitet wurde, wird eine neue, serverinterne Anfrage gestartet. Die erste RewriteCond-Zeile sorgt dafür, dass diese interne Anfrage nicht nochmals umgeschrieben wird.
Die zweite RewriteCond-Zeile sorgt auf die gleiche Weise dafür, dass Anfragen an dein css/-Verzeichnis ebenfalls unberührt bleiben.

Und nur zur Abwechslung von dem ewigen mod_rewrite-Kram:

In /.htaccess:

Code: Alles auswählen

<Files maps>
AcceptPathInfo on
ForceType application/x-httpd-php
</Files>
In der Datei /maps (genau so, nur die vier Buchstaben, ohne Endung):

Code: Alles auswählen

<?php
phpinfo&#40;INFO_VARIABLES&#41;; // nur als Beispiel
?>
Mit diesem Aufbau erreicht man fast (siehe unten) das Gleiche wie mit obigem mod_rewrite-Konstrukt. Die Datei maps wird mittels ForceType als PHP-Skript deklariert, AcceptPathInfo on sorgt dafür, dass Pfad-Anhängsel an einen Dateinamen akzeptiert und an das Objekt übergeben werden.
Beim Aufruf von /maps/schnurz wird daher die Datei maps als PHP-Skript ausgeführt, in ihm lässt sich eine Variable namens $_SERVER["PATH_INFO"] abfragen, sie enthält den Wert "/schnurz", d.h. den angehängten Pfadteil.

Es gibt allerdings einen Unterschied zur mod_rewrite-Lösung: Da maps jetzt ein Skript ist und kein Verzeichnis, lässt sich logischerweise auch kein Unterverzeichnis maps/css/ mehr anlegen. Der Inhalt dieses Verzeichnisses müsste aus dem Skript heraus generiert werden, deshalb ist diese Lösung hier nur die zweitbeste. Sie zeigt aber trotzdem schön, dass es ein Leben jenseits mod_rewrite gibt.

Details zu allen Optionen: https://httpsd.apache.org/docs/2.2/mod/ ... rence.html

swordi
PostRank 1
PostRank 1
Beiträge: 5
Registriert: 25.08.2008, 14:51

Beitrag von swordi » 26.08.2008, 08:22

hey

danke schonmal für die ausführliche antwort,

hab das jetzt so versucht. klappt teilweise so wie es sollte ;-)

das problem hab ich jetzt, dass er alles richtig umleitet, jedoch da dann irgendwie die pfade nimmer stimmen, da er kein css ( und images und js ) mehr lädt.

weißt du evtl noch wie ich das verhindern kann???

Southmedia
PostRank 10
PostRank 10
Beiträge: 7322
Registriert: 20.07.2003, 19:56

Beitrag von Southmedia » 26.08.2008, 09:03

Die Pfade zum CSS, images und so weiter absolut einbinden (also mit Domainname) oder relativ zum Root, statt relativ zur Datei.

Mork vom Ork
PostRank 9
PostRank 9
Beiträge: 2557
Registriert: 08.07.2008, 11:07
Wohnort: Aufm Friedhof.

Beitrag von Mork vom Ork » 26.08.2008, 09:12

Southmedia hat geschrieben:Die Pfade zum CSS, images und so weiter absolut einbinden (also mit Domainname) oder relativ zum Root, statt relativ zur Datei.
Niemals zu einer Seite gehörige URLs mit Domain eintragen, sofern es nicht absolut unumgänglich ist - es ist unnötig und macht bestenfalls irgendwann mal einen Haufen Arbeit. Das Referenzieren als absoluter Pfad, also zB /maps/css/bla.css statt css/bla.css (führenden Schrägstrich beachten, kennzeichnet das Wurzelverzeichnis), reicht vollkommen.

swordi
PostRank 1
PostRank 1
Beiträge: 5
Registriert: 25.08.2008, 14:51

Beitrag von swordi » 26.08.2008, 09:30

hmm hab jetzt mal alle pfade umgestellt

die sollten eigentlich passen, da mir die developer toolbar die eingebunden js files richtig anzeigt.

aber bekomme jetzt javascript fehler - sehr komisch - also irgendwas ist da noch nicht so ganz richtig ;-)

aber danke für eure hilfe.

swordi
PostRank 1
PostRank 1
Beiträge: 5
Registriert: 25.08.2008, 14:51

Beitrag von swordi » 26.08.2008, 09:50

so vielleicht könnt ihr mir jetzt nochmal helfen
aktuell sieht meine htaccess so aus

RewriteEngine on

RewriteBase /vulkanland/maps/
RewriteCond %{SCRIPT_FILENAME} !/index\.php$
RewriteCond %{REQUEST_URI} !^/vulkanland/maps/css/
RewriteCond %{REQUEST_URI} !^/vulkanland/maps/js/
RewriteCond %{REQUEST_URI} !^/vulkanland/maps/images/
RewriteCond %{REQUEST_URI} !^/vulkanland/maps/images/cat
RewriteCond %{REQUEST_URI} !^/vulkanland/maps/icons/
RewriteCond %{REQUEST_URI} !^/vulkanland/maps/xml/
RewriteCond %{REQUEST_URI} !^/vulkanland/maps/includes/
RewriteCond %{REQUEST_URI} !^/vulkanland/maps/print.php

RewriteRule (.*) index.php?vars=$1


wenn ich xxxx/maps/asdfasdf mach, dann passt alles so wie es sein soll - bekomme in $vars dann asdfasdf und alles funktioniert perfekt

wie kann ich es jetzt noch machen, dass ich xxx/maps/asdf/asdf schreiben kann
und er mir trotzdem alles auf index.php mappt???

im moment bekomm ich dann wieder alles falsche pfade, weil er /asdf/ überall dazufügt

danke für eure hilfe

lg

swordi
PostRank 1
PostRank 1
Beiträge: 5
Registriert: 25.08.2008, 14:51

Beitrag von swordi » 26.08.2008, 10:18

hat sich alles aufgelöst
musste die pfade nachbessern - jetzt sollts aber gehn und ich weiß halbwegs wie ;-)

danke für die hilfe

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag