• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Es regnet, ist neblig und kalt, alle sind krank und der Chef wird zunehmend cholerisch. Das Thema des Monats ist also folgerichtig --> Das Grau(en)
    Wir sind gespannt, war Euch dazu einfällt! Zum Wettbewerb --> 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
 

dirkgomez

Gast
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
 

kstyle

Weigelts Zinszahler (Rotfranch)
Registriert
21.01.06
Beiträge
246
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
 

Hilarious

Gelbe Schleswiger Reinette
Registriert
10.08.05
Beiträge
1.759
So in der Art, würde ich sagen:

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

kstyle

Weigelts Zinszahler (Rotfranch)
Registriert
21.01.06
Beiträge
246
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
 

Hilarious

Gelbe Schleswiger Reinette
Registriert
10.08.05
Beiträge
1.759
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?).
 

kstyle

Weigelts Zinszahler (Rotfranch)
Registriert
21.01.06
Beiträge
246
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
 

Hilarious

Gelbe Schleswiger Reinette
Registriert
10.08.05
Beiträge
1.759
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
 

kstyle

Weigelts Zinszahler (Rotfranch)
Registriert
21.01.06
Beiträge
246
aaaah okay.. VIELEN VIELEN DANK! :D

Gruß
sidney