• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> Klick

mod_rewrite hilfe

kstyle

Weigelts Zinszahler (Rotfranch)
Registriert
21.01.06
Beiträge
246
Hi leute,

wir versuchen zur zeit bei ner community seite die links mit mod_rewrite zu verändern. in der config vom apache isses drin, also die mod is geladen. ich hab gelesen das man das in eine .htaccess datei schreiben muss...

wir versuchen folgendes:
eine "index.php?s=news" (zb.) soll mit "/home/" ersetzt werden..
dann haben wir in der .htaccsess datei das stehen:
RewriteEngine on
RewriteRule ^/(.*)$ /index.php?s=$1
aber dies ist falsch.. weiß einer von Euch wie es richtig geht?? wir haben nehmlich bei keine ahnung von, aber bräuchten es weil es für eine Community seite einfach gut aussieht wenn man dann zb. "/user/123456/" hat..
danke schonmal!

ps: das selbe wollen wir zb. für index.php?s=user&id=123456 ... wie geht das?

Gruß,
sidney
 
Hi Sidney,

die Datei heißt .htaccess.

Und Du willst das Pferd verkehrt herum aufzäumen, mod_rewrite ist nicht zum Umschreiben von Links während des "Ausgabe-Prozesses", sondern spielt eine Rolle bei der "Request-Annahme". (sehr verknappt in Englisch von http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html: This module uses a rule-based rewriting engine (based on a regular-expression parser) to rewrite requested URLs on the fly.)

Du gibst halt einfach /user/123456/ aus, das ist doch was Du willst oder?

-- Dirk
 
hi,
danke schonmal für die Antwort!

ja ich möchte das in der Adresszeile dann zb. /user/123456/ steht wie du sagtest. Nur wir bekommen den Code nicht hin :S

als bsp:
index.php?s=news
-> in der Adresszeile soll " /news/ " stehen..

index.php?s=user&id=123456
-> in der Adresszeile soll " /user/123456 " stehen.. also das man index.php?s=user&id=123456 auch mit /user/123456/ aufrufen kann.. sowas ist möglich nur wir bekommen es halt nicht hin.. weißt du vielleicht wie der Code lauten muss??

Währe sehr nett :)

Gruß,
sidney
 
So in der Art, würde ich sagen:

RewriteRule ^([a-zA-Z0-9@-]+)\/([0-9]+)\/$ index.php?s=$1&id=$2
 
Hi,

ich hab jetzt mal geschaut aber irgendwie is das ganze bisschen kompliziert..

also wir geben ja Variablen aus wie zb.
index.php?s=news, index.php?s=user&id=123456

Muss man das dann so machen?
RewriteRule ^([a-zA-Z0-9@-]+)\/([0-9]+)\/$ index.php?s=$1&id=$2
RewriteRule ^([a-zA-Z0-9@-]+)\$ index.php?s=$1
RewriteRule ^([a-zA-Z0-9@-]+)\([a-zA-Z0-9@-]+)\/$ index.php?s=$1&cat=$2

also alles einzelnd Definieren?
Währe dankbar um jede Hilfe!

Gruß
sidney
 
Hi,

ich hab jetzt mal geschaut aber irgendwie is das ganze bisschen kompliziert..

also wir geben ja Variablen aus wie zb.
index.php?s=news, index.php?s=user&id=123456

Muss man das dann so machen?
RewriteRule ^([a-zA-Z0-9@-]+)\/([0-9]+)\/$ index.php?s=$1&id=$2
RewriteRule ^([a-zA-Z0-9@-]+)\$ index.php?s=$1
RewriteRule ^([a-zA-Z0-9@-]+)\([a-zA-Z0-9@-]+)\/$ index.php?s=$1&cat=$2

also alles einzelnd Definieren?
Währe dankbar um jede Hilfe!

Gruß
sidney

Das wird so nicht funktionieren. Vielmehr musst Du Dir eine Parameterfolge überlegen, die immer eingehalten wird; so erhält jeder Parameter seinen eigenen Platz in der Abfolge.

Wichtig ist daher die Überlegung: Was möchte ich tun, und wie möchte ich es tun? Möchte ich einen Artikel aus einer Artikelsammlung anzeigen, besteht meine Aktion aus drei Informationen:
1. Anzeigen
2. Artikel aus einer bestimmten Sammlung
3. Artikel-ID

Du siehst schon, dass sich theoretisch die Information zwei einsparen ließe, wenn klar wäre, dass es sich bei der Information #3 immer um eine Artikel-ID und nicht vielleicht um etwas ganz anderes mit einer Ordnungszahl handelte. Das ist aber vermutlich nicht der Fall, also würdest Du auf eine solche Parameter-Abfolge kommen:

index.php?aktion=anzeigen&was=neuigkeit&welche=42
==> Jetzt müsste Deinem Controller gesagt werden können, was aus der Datenbank zu zupfen ist. In diesem Fall die Neuigkeit Nr. 42.

oder

index.php?aktion=anzeigen&was=neugkeit&welche=0&ab=10&limit=20
==> Dein Controller könnte durch die nicht definierte Angabe, welchen Artikel er selektieren soll, wissen, dass er keinen bestimmten sonder eine ganze Menge von Artikeln auslesen und anzeigen soll, und zwar ab dem Zehnten und dann nicht mehr als 20 Stück.

Lassen sich die Parameter als immer so beschreiben, müsstest Du Dich für Deine Web-Applikation nur darauf einlassen, dass Links bei Dir immer dieselbe Parameterabfolge haben und schon kannst Du das mit einem regulären Ausdruck formulieren (oder, wie dachtest Du, funktioniert amazon?).
 
Ah, erstma Danke :D (geiler zufall mit der PM ;D)
also Ich hab das jetzt so verstanden das die varbiablen immer gleich bleiben müssen..

also: index.php?s=xxxx&id=xxxx&irgendwas=xxxx
es muss also immer das einhalten.. ist das richtig? so hab ich das jetzt verstanden :)

Gruß
sidney
 
Ah, erstma Danke :D (geiler zufall mit der PM ;D)
also Ich hab das jetzt so verstanden das die varbiablen immer gleich bleiben müssen..

also: index.php?s=xxxx&id=xxxx&irgendwas=xxxx
es muss also immer das einhalten.. ist das richtig? so hab ich das jetzt verstanden :)

Gruß
sidney

Ja, genau. :D
 
aaaah okay.. VIELEN VIELEN DANK! :D

Gruß
sidney