mod_rewrite zeigt keine Auswirkung
Bernd
- webserver
Hallo,
ich will meine Links in einer PHP Seite mit mod_rewrite ändern.
Als Basis für die Seite dient eine PHP-Datei in die dann Include-Dateien geladen werden.
Für die Links
(z.B.index.php?ID=schule&sub_ID=projekte&category_ID=145)
habe ich eine .htaccess-Datei erstellt mit folgendem Inhalt:
RewriteRule ^index(.*)_(.*)_(.*).html$ index.php?ID=$1&sub_ID=$2&category_ID=$3
Der Apache-Server meines Providers hat mod_rewrite nicht installiert, deshalb muß ich auf meinem localhost testen, wo dies möglich ist.
Doch leider passiert gar nichts, die Links behalten ihre "alte Form".
Ich habe keinen Fehler entdecken können. Woran kann es liegen?
mfg
Bernd
Hallo,
habe ich eine .htaccess-Datei erstellt mit folgendem Inhalt:
RewriteRule ^index(.*)_(.*)_(.*).html$ index.php?ID=$1&sub_ID=$2&category_ID=$3
...die RewriteEngine hast du aber schon auf ON, oder? Schalt vielleicht auch mal das Logging ein damit du siehst was deine Rewrite-Regeln machen.
Ansonsten such mal bei Google nach RewriteRule, da gibts es unzählige gute Tutorials wie du deine Regeln umschreiben musst.
Gruß,
Stephan
Hallo,
die RewriteEngine habe ich auf ON.
Logging? Wie schalte ich das ein?
mfg
Bernd
hi,
Logging? Wie schalte ich das ein?
natürlich so, wie es das handbuch zu mod_rewrite beschreibt.
http://httpd.apache.org/docs/mod/mod_rewrite.html#RewriteLog und folgender abschnitt.
gruss,
wahsaga
Hallo,
ich habe folgendes ausprobiert.
RewriteEngine on
RewriteRule ^index(.*)_(.*)_(.*).html$ /test/index.php?ID=$1&sub_ID=$2&category_ID=$3
RewriteLog c:/rewrite.log
RewriteLogLevel 9
(benutze windows)
Leider wird mir dann bei Aufruf ein Serverfehler ausgegeben. Fehler in einem CGI-Script, Error 500
Muß ich da in meiner httpd.conf vielleicht auch noch Einstellungen vornehmen, denn eine log Datei wird auch nicht geschrieben?
Habe es nun hinbekommen, das eine log-Datei geschrieben wird.
Folgendes wird in die log-Datei bei Aufruf einer URL geschrieben.
27.0.0.1 - - [05/Mar/2004:12:51:11 +0100] [localhost/sid#23bb88][rid#554cf8/initial] (2) init rewrite engine with requested uri /projekt23/index.php
127.0.0.1 - - [05/Mar/2004:12:51:11 +0100] [localhost/sid#23bb88][rid#554cf8/initial] (1) pass through /projekt23/index.php
127.0.0.1 - - [05/Mar/2004:12:51:11 +0100] [localhost/sid#23bb88][rid#554cf8/initial] (3) [per-dir D:/www/htdocs/projekt23/] strip per-dir prefix: D:/www/htdocs/projekt23/index.php -> index.php
127.0.0.1 - - [05/Mar/2004:12:51:11 +0100] [localhost/sid#23bb88][rid#554cf8/initial] (3) [per-dir D:/www/htdocs/projekt23/] applying pattern '^index(.*)_(.*)_(.*).html$' to uri 'index.php'
127.0.0.1 - - [05/Mar/2004:12:51:11 +0100] [localhost/sid#23bb88][rid#554cf8/initial] (1) [per-dir D:/www/htdocs/projekt23/] pass through D:/www/htdocs/projekt23/index.php
Wird da jemand draus schlau, oder kann jemand entdecken ob dort ein Fehler ausgegeben wird?
mfg
Bernd
hi,
Für die Links
(z.B.index.php?ID=schule&sub_ID=projekte&category_ID=145)
habe ich eine .htaccess-Datei erstellt mit folgendem Inhalt:RewriteRule ^index(.*)_(.*)_(.*).html$ index.php?ID=$1&sub_ID=$2&category_ID=$3
und welchen URL hast du jetzt versucht, über die adresszeile deines browsers aufzurufen?
gruss,
wahsaga
Hallo,
ich habe versucht die Datei index.php im DocumentRoot aufzurufen.
mfg
Bernd
use Mosche;
ich habe versucht die Datei index.php im DocumentRoot aufzurufen.
Damit die RewriteRule zutrifft, musst du auch eine URI aufrufen, auf der der linke Teil der RewriteRule zutrifft, d.h. index_usw_usf.html
use Tschoe qw(Matti);
Hallo,
das hat geholfen, ich habe wohl das ganze komplett falsch verstanden, ich dachte die URL's werden dann in dem Script auch automatisch umbenannt.
Geht das irgendwie oder muß ich das alles per hand eintragen?
mfg
Bernd
Hallo,
das hat geholfen, ich habe wohl das ganze komplett falsch verstanden, ich dachte die URL's werden dann in dem Script auch automatisch umbenannt.
Dann hatte ich Dich doch richtig verstanden (siehe mein anderes Posting). :-)
Geht das irgendwie oder muß ich das alles per hand eintragen?
Es gibt Text-Editoren, die für Suchen/Ersetzen auch RegularExpressions beherrschen. Da könntest Du eine ensprechende Regel definieren und somit in einer Datei relativ schnell alle URLs ersetzen. Als Bsp. für solche Editoren fallen mir spontan TextPad und WinEdt ein, es gibt aber bestimmt noch viele andere mehr.
Grüße, Alex.
Hi,
schönen Dank für die Hilfe. Ich selber benutze Phase 5 oder Proton die können das auch.
mfg
Bernd
Hallo,
ich will meine Links in einer PHP Seite mit mod_rewrite ändern.
Ich bin mir nicht ganz sicher, ob Du wirklich verstanden hast, was man mit mod_rewrite tun kann. Jedenfalls sind einige Deiner Sätze für mich etwas missverständlich formuliert. Wenn meine Befürchtungen sich als falsch erweisen sollten, entschuldige bitte meine Erklärung.
Mit mod_rewrite (bzw. mit dessen RewriteRule) kannst Du die an den Server ankommenden Anfragen umleiten/verändern. Das heisst, wenn jemand (also der Browser eines Users) a.html anfragt, kannst Du ihm (entsprechende Einstellungen vorausgesetzt) den Inhalt von b.hmtl liefern. Oder sagen, nee, die a.html ist nicht mehr verfügbar, hole Dir dafür die c.html.
In Deinem Fall vermute ich, Du willst gerne Anfragen nach der (auf Deinem Server nicht existierenden) Datei index_schule_projekte_145.html mit etwas beantworten, was der Server eigentlich nur bei einer Anfrage nach index.php?ID=schule&sub_ID=projekte&category_ID=145 rausrücken sollte.
Also definierst Du in Deiner .htaccess Datei die entsprechenden Regeln (wie Du das ja schon machst). Die Links _innerhalb_ deiner HTML/PHP Seiten verändert das natürlich noch nicht. Wenn Du die "schöneren" Links benutzen willst, musst Du also in Deinen Webseiten selber alle Links der Form index.php?ID=schule&sub_ID=projekte&category_ID=145 in die Form index_schule_projekte_145.html umwandeln. Deine .htaccess sorgt nur dafür, dass später die Seitenaufrufe wieder entsprechend in die ursprüngliche Form zurückverwandelt werden (also in Deinem Fall, dass die in den .html Dateinamen eingebetteten Parameter herausgelöst und richtig an die Datei index.php übergeben werden).
Der Apache-Server meines Providers hat mod_rewrite nicht installiert, deshalb muß ich auf meinem localhost testen, wo dies möglich ist.
Mir ist auch nicht ganz klar, weshalb Du dann mit mod_rewrite herumexperimentierst, wenn Dein Server, auf dem Deine Webseiten liegen, das sowieso nicht unterstützt. Oder willst Du dann den Provider wechseln, wenn Du alles getestet hast?
Grüße, Alex.