Boardunity & Video Forum

Boardunity & Video Forum (https://boardunity.de/)
-   Programmierung und Datenbanken (https://boardunity.de/programmierung-datenbanken-f23.html)
-   -   mod_rewrite (https://boardunity.de/mod_rewrite-t1341.html)

LordAvalon 03.02.2004 19:01

mod_rewrite
 
Ich wollte mod_rewrite anwenden um die Seite "index.php?id=home" auch unter "home.html" erreichen zu können.

Also habe ich die Datei ".htaccess" erstellt und mit diesem Inhalt gefüllt:

"RewriteEngine on
RewriteRule ^home.html$ index.php?id=$home"

Aber es tut nicht. Ich kann nun keine Datei aus dem gesamten Ordner mehr anzeigen lassen (keine erforderlichen Rechte und bla bla) . Was mache ich falsch ?

Patrick Gotthardt 03.02.2004 19:14

Mhh... ich kann`s nicht garantieren, aber bist du sicher, dass hinter dem id= ein $ stehen muss?

LordAvalon 03.02.2004 19:15

Hab ich so irgendwo gelesen. Ich habe es auch schon ohne $ probiert. Es klappt aber nicht :(

Daniel Richter 03.02.2004 19:16

PHP-Code:

RewriteEngine On 
RewriteRule 
^(.*)\.htmindex.php?id=$

Müsste klappen.

exe 03.02.2004 19:17

Der reguläre Ausdruck war auch ein bisschen fehlerhaft.
Wenn du nur "home.html" durch "index.php?id=home" ersetzen willst reicht es wenn du "RewriteRule ^home.html$ index.php?id=home" schreibst.
Wenn du allerdings alle *.html seiten nach index.php?id=xyz übersetzen willst sollte dir mit folgendem geholfen werden:

RewriteRule ^(.*?)\.html$ index.php?id=$1

Ich konnts nicht testen da die Rewrite Engine bei mir nicht zum Einsatz kommt aber das sollte so stimmen.

LordAvalon 03.02.2004 19:23

Danke.
Jetzt bin ich etwas weiter, aber nun steht da folgendes, wenn ich versuche die home.html aufzurufen:

"Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, root@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log."

Dabei habe ich mich vorher extra beim Hoster informiert und der hat mir versichert, dass mod_rewrite unterstützt wird ....

Woran liegt das jetzt ?

Daniel Richter 03.02.2004 19:47

Wenn du es mit meinem Code gemacht hast, dann musst du die Seite mit home.htm aufrufen.

LordAvalon 03.02.2004 20:14

schon klar, aber ich habe es mit dem von exe gemacht. deiner hat irgendwie auch nicht funktioniert :)

exe 03.02.2004 20:16

Hast du denn das "RewriteEngine On" in deiner .htaccess Datei gelassen? Ich habs zwar in meinem Beispiel ausgelassen, es gehört aber weiterhin in deine Datei.

LordAvalon 03.02.2004 20:17

das habe ich immer noch drin

Björn 03.02.2004 21:03

wird auf dem server confixx benutzt?
also ich hab das selbe problem
mfg

LordAvalon 04.02.2004 14:34

Ja, Confixx.

Aber ich weiss jetzt woran es bei mir liegt: Mein Hoster hat mir mitgeteilt, dass da wohl erst irgendeine Option von denen aus aktiviert werden müsse ... Nun ja, ich warte ...

Aber noch eine Frage: Wie mache ich das denn dann mit der Weitergabe von Variablen, die per GET wieder erkannt werden ? Die Links müssen dann ja weiter auf Seiten verlinken, wie index.php?id=bla&id2=blub , oder ? Aber dann folgen ja die Suchmaschinen - Bots nicht mehr weiter ... Wie kann ich das anders lösen ?

Björn 04.02.2004 14:51

könntest dich evtl auch erkundigen welche option das ist?
ich möchte gerne auch mod rewrite haben!!

exe 04.02.2004 15:03

LordAvalon: die Links sollen selbstverständlich in dem neuen Format geschrieben werden. ModRewrite schreibt ja nicht die HTML Ausgaben um sondern Anfragen eines Browsers.
Wenn du also via ModRewrite index.php?id=1&blah=2 in /1/2/seite.html umwandelst musst du auch in deinen Templates bzw. HTML Ausgaben /1/2/seite.html schreiben.

Björn 04.02.2004 15:04

naja aber das mit der option da stimmt schon.. weil ich habe das selbe problem und habe mal bei einem anderen hoster meine komplette seite auf mod rewrite gehabt
mfg

MrNase 04.02.2004 15:31

Eine Frage die mich schon länger beschäftigt und ich denke der Themenstarter wird damit auch ein Problem haben.

Wenn ich jetzt index.php?seite=test in /seite/test umwandle dann kann ich ja $_GET['seite'] nicht mehr verwenden, weil er $seite nicht mehr mit test belegt. Dann müsste man ja vorher /seite/test wieder in index.php?seite=test umwandeln damit $seite auch wirklich 'test' enthält.

wie jetzt bitte, oder?! ;)

Björn 04.02.2004 15:41

da kann ich dir gewisse abhilfe schaffen!

PHP-Code:

parse_str(array_pop(explode("?",GETENV("REQUEST_URI")))); 

ganz oben hin für get!
http://www.php-resource.de/forum/sho...threadid=12722 mehr zu dem thema

aber ich denk ich weis, woran es liegt

AllOverride = All oder so muss es in der httpd.conf lauten..
mfg

Björn 04.02.2004 16:48

speziell zum thema mod_rewrite und confixx habe ich folgendes gefunden:

http://www.confixx-forum.de/forum/sh...hlight=rewrite

mfg

exe 04.02.2004 20:44

Zitat:

Zitat von LordAvalon
Aber ich weiss jetzt woran es bei mir liegt: Mein Hoster hat mir mitgeteilt, dass da wohl erst irgendeine Option von denen aus aktiviert werden müsse ... Nun ja, ich warte ...

Ich habe jetzt doch mal mod_rewrite bei mir aktiviert und getestet was ich da geschrieben habe. Offenbar unterstützen die regulären Ausdrücke bei mod_rewrite das ? nicht so wie das bei PHP/Perl der Fall ist. Jedenfalls hat der Ausdruck nach dem entfernen des Fragezeichens hervorrangend funktioniert:
Code:

RewriteEngine on
RewriteRule ^(.*)\.html$ index.php?id=$1

Zitat:

Zitat von MrNase
Wenn ich jetzt index.php?seite=test in /seite/test umwandle dann kann ich ja $_GET['seite'] nicht mehr verwenden, weil er $seite nicht mehr mit test belegt.

Nein, dem ist nicht so. mod_rewrite bedeutet 'rewrite on the fly', d.h. wenn /seite/test in index.php?seite=test umgewandelt wird arbeitet der Indianer nach dem rewrite mit der URL index.php?seite=test weiter. PHP stellt folglich die Variable $_GET['seite'] bzw. $seite bei aktiviertem 'Register globals' nach wie vor zur Verfügung, aus Sicht des Scripts ändert sich mit mod_rewrite also gar nichts.

LordAvalon 05.02.2004 16:08

Haa,

ich liebe euch :D

Es geht !!! Und dafür habe ich so lange rumüberlegt und rumprobiert !

Danke, danke, danke.

Björn 05.02.2004 16:15

weist du welche einstellung es war, die dein hoster umgestellt hat?
mfg

LordAvalon 05.02.2004 16:18

Nein.
Das ist die eMail:

"Sehr geehrter Herr ...,

Ihnen wurde soeben die Rechte gesetzt. Bitte testen Sie Ihr Script erneut.

Bitte beachten Sie auch für zukünftige Fragen unser Helpsystem, das Sie unter
http://faq.udmedia.de finden.

Freundliche Grüße sendet

Ihr UD Media Team
Thomas Borgans


Aber wenn du bei deinem Hoster nachfragst, wirst du es sicher erfahren :D



Jetzt hab ich aber noch eine Frage ...
Wie lautet denn die Anweisungen dafür, dass wenn die Datei index.php?id=bla&id2=blub lautet, dann die Datei blub/bla.html geladen wird ? Und falls keine id2 vorhanden ist, soll nur die Datei bla.html geladen werden.

id2 ist also praktisch der Ordner und id der name der Datei.

exe 05.02.2004 17:13

Wenn du eine Anfrage auf blub/blah.html in index.php?id=blah&id2=blub umwandeln willst geht das folgendermaßen:

Code:

RewriteRule ^(.*)/(.*)\.html$ index.php?id=$2&id2=$1
Wenn id2 nicht vorhanden ist stimmt ja wieder die ursprüngliche RewriteRule.

LordAvalon 08.02.2004 14:29

Aber es soll irgendwie selbstständig erkannt werden, ob id2 vorhanden ist oder nicht.

Und wenn es vorhanden ist, soll die Seite id2/id.html geladen werden und sonst eben nur die Seite id.html .

LordAvalon 11.02.2004 12:35

Andere Frage:

Ich habe in meiner Seite das Menü und den Inhaltsteil in meine Index - Seite includet. Wenn ich jetzt mit der Mod - Rewrite Methode einen Verweis von bla/blub.html setze und dieser geöffnet wird, steht ja in der Adresszeile .../bla/blub.html . Wenn ich aber jetzt einen der Links anklicke, der sich wieder auf den übergeordneten Ordner bezieht, wird das Verzeichnnis trotzdem nicht gewechselt und es wird nach /bla/home.html gesucht, obwohl sich die home.html in dem Ordner darüber befindet.

Wie kann ich das Problem im Menü beheben, ohne ein komplett anderes für jeden Orner machen zu müssen ? (wird ja immer nur das eine includet)


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:30 Uhr.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25