OT: mod_rewrite + php
am 02.07.2006 14:23:42 von sarobo
ein sonniges Hallo.
hier nun zu meinem Problem.
ich habe eine index. php und eine branche.php Datei.
In der index ist eine tabelle mit z.B.
....
Wenn ich jetzt Autohaus.html im browser aufrufe , dann wird diese Seite auch
gefunden.
Allerdings wird die $kat nicht mitgeliefert.
hier meine .htaceess:
############################################
rewriteEngine On
RewriteBase /
RewriteRule ^\.htaccess$ - [F]
RewriteRule ^(.*).html$ branche.php?kat=$kat [L,QSA]
############################################
Kann mit jemand auch bei diesen Temperaturen helfen?
Danke.
Re: OT: mod_rewrite + php
am 02.07.2006 14:40:16 von Andre Meiske
Mustafa Akin wrote:
> RewriteRule ^(.*).html$ branche.php?kat=$kat [L,QSA]
Hmm... ohne das jetzt auszuprobieren: Sollte das nicht besser '$1' statt
'$kat' sein?
Ad Astra
Andre
Re: OT: mod_rewrite + php
am 02.07.2006 14:56:23 von Norbert Melzer
Mustafa Akin schrieb:
> hier meine .htaceess:
> ############################################
> rewriteEngine On
> RewriteBase /
> RewriteRule ^\.htaccess$ - [F]
> RewriteRule ^(.*).html$ branche.php?kat=$kat [L,QSA]
> ############################################
kat=$1
Re: OT: mod_rewrite + php
am 02.07.2006 15:15:05 von sarobo
>>Sollte das nicht besser '$1' statt
> '$kat' sein?
>
leider kenne ich mich mit mod_rewrite Befehlen zu wenig aus.
Was wäre denn der Unterschied?
Re: mod_rewrite + php
am 02.07.2006 15:18:27 von Carsten Wiedmann
Mustafa Akin schrieb:
> In der index ist eine tabelle mit z.B.
>
>
>
> ...
Ich seh hier zwar ein paar Links mit einem QueryString dran, aber keine
Tabelle ;-)
> Wenn ich jetzt Autohaus.html im browser aufrufe , dann wird diese Seite
> auch gefunden.
> Allerdings wird die $kat nicht mitgeliefert.
Logisch. Dann müsste dein QueryString ja so aussehen:
|
*scnr*
Du meinst, $_GET['kat'] in deinem PHP-Script enthält dann nicht den Wert den
du vermutest.
> hier meine .htaceess:
> ############################################
> rewriteEngine On
> RewriteBase /
> RewriteRule ^\.htaccess$ - [F]
> RewriteRule ^(.*).html$ branche.php?kat=$kat [L,QSA]
> ############################################
Mit QSA legst du ja fest, das der ursprüngliche QueryString angehängt wird,
plus dem, den du in der RewriteRule definierst. Und in der RewriteRule
überschreibst du dann ja gleich das Orginal mit deiner Vorgabe in der Rule.
Und das auch sinnlos, da ModRewrite keine Variablen wie "$kat" kennt...
(Wäre hier nur eine nicht existierende Backreferenz auf die Rule) Also lass
alles weg, und es wird dein gewünschter orginale QueryString genommen:
| RewriteRule ^(.*).html$ branche.php [L]
(BTW: sieht man hier auch schön, dass man in Links keine Variablen übergibt,
sondern nur einen QueryString. Erst das Ziel, bei dir PHP, macht dann
möglicherweise automatisch Variablen aus dem QueryString.)
Gruß
Carsten
Re: OT: mod_rewrite + php
am 02.07.2006 15:19:46 von Norbert Melzer
Mustafa Akin schrieb:
>>> Sollte das nicht besser '$1' statt
>> '$kat' sein?
>>
>=20
> leider kenne ich mich mit mod_rewrite Befehlen zu wenig aus.
>=20
> Was wäre denn der Unterschied?=20
Mod_rewrite kennt nur Backreferences in der Form $1 bis $99 (AFAIR) und
da passt $kat einfach nicht rein. Das gibt es für MR nicht, ist deswege=
n
NULL
Re: OT: mod_rewrite + php
am 02.07.2006 15:26:28 von Norbert Melzer
Mustafa Akin schrieb:
> ein sonniges Hallo.
>=20
> hier nun zu meinem Problem.
>=20
> ich habe eine index. php und eine branche.php Datei.
>=20
> In der index ist eine tabelle mit z.B.
>
>
>
Wo ich gerade das Post von Carsten lese fällt mir noch auf, daß Du hi=
er
besser schreiben solltest
Sonst hast Du bei google ganz schnell doppelt gelistete Seiten drin,
einmal branche.php?kat=3DX und X.html, das wirkt sich wenn Du pech hast
negativ auf den Pagerank aus. Da er sich dann eben auf zwei verschiedene
Seiten aufsplittet. Dazu sei Dir noch geraten ein wenig über kanonische=
URLs zu googeln.
> Allerdings wird die $kat nicht mitgeliefert.
>=20
> hier meine .htaceess:
> ############################################
> rewriteEngine On
> RewriteBase /
> RewriteRule ^\.htaccess$ - [F]
Kannst Du Dir für gewöhnlich sparen, der Zugriff auf die .htaccess un=
d
htpasswd (eigentlich alle Dateien deren Name mit .ht beginnt) ist in
einer Apache-Standardkonfiguration bereits gesperrt.
> RewriteRule ^(.*).html$ branche.php?kat=3D$kat [L,QSA]
Wie bereits anderswo erwähnt, muss es kat=3D$1 heißen, ausserdem hast=
Du
vergessen den Punkt zu escapen, daher ist folgende Zeile richtiger:
RewriteRule ^(.*)\.html$ branche.php?kat=3D$1 [L,QSA]
> ############################################
Re: OT: mod_rewrite + php
am 02.07.2006 19:47:07 von Helmut Chang
Norbert Melzer schrieb:
>>
....
> Wo ich gerade das Post von Carsten lese fällt mir noch auf, daß Du hier
> besser schreiben solltest
>
>
Noch besser wäre allerdings:
Meinjanur, heli
Re: OT: mod_rewrite + php
am 02.07.2006 23:21:18 von Norbert Melzer
Helmut Chang schrieb:
> Norbert Melzer schrieb:
>=20
>>>
> ...
>> Wo ich gerade das Post von Carsten lese fällt mir noch auf, daß Du=
hier
>> besser schreiben solltest
>>
>>
>=20
> Noch besser wäre allerdings:
>=20
>
>=20
> Meinjanur, heli
>=20
Ich verstehe nicht worauf Du hinauswillst, aber wenn er von seinen
eigenen Seiten eh nur branche.php aufruft, kann er sich ModRewrite auch
sparen...
Re: OT: mod_rewrite + php
am 02.07.2006 23:30:16 von Carsten Wiedmann
Norbert Melzer schrieb:
> Helmut Chang schrieb:
> > Norbert Melzer schrieb:
> > >
> >
> > Noch besser wäre allerdings:
> >
> >
>
> Ich verstehe nicht worauf Du hinauswillst,
IMHO auf das "=" nach dem href ;-)
Gruß
Carsten
Re: OT: mod_rewrite + php
am 03.07.2006 00:24:08 von Roland Heinrich
> > Norbert Melzer schrieb:
> > Noch besser wäre allerdings:
> >
> >
ja, das mache ich jetzt auch so. ich habe nur noch ein
kleines Problem. Es wird noch auf eine zweite Seite verwiesen.
mit dieser Zeile tut sich leider nichts
RewriteRule ^hauptbranche.html$ hauptbranche.php?kat=3D$2 [L]
Re: OT: mod_rewrite + php
am 03.07.2006 16:53:26 von Norbert Melzer
Carsten Wiedmann schrieb:
> Norbert Melzer schrieb:
>=20
>> Helmut Chang schrieb:
>>> Norbert Melzer schrieb:
>>>>
>>> Noch besser wäre allerdings:
>>>
>>>
>> Ich verstehe nicht worauf Du hinauswillst,
>=20
> IMHO auf das "=3D" nach dem href ;-)
C&P ist halt BÖSE(tm) :-)
MfG
Norbert
Re: OT: mod_rewrite + php
am 03.07.2006 17:08:42 von Norbert Melzer
Roland Heinrich schrieb:
>>> Norbert Melzer schrieb:
>>> Noch besser wäre allerdings:
>>>
>>>
>=20
> ja, das mache ich jetzt auch so. ich habe nur noch ein
> kleines Problem. Es wird noch auf eine zweite Seite verwiesen.
>=20
>
>=20
>=20
> mit dieser Zeile tut sich leider nichts
> RewriteRule ^hauptbranche.html$ hauptbranche.php?kat=3D$2 [L]
Klar tut sich da was (warscheinlich). Je nachdem ob diese Rule jetzt als
letzte steht, oder vor der anderen passiert etwas anderes, aber ich
behaupte mal daß sie als letzte drinsteht, ist halt am einfachsten imme=
r
hinten an zu fügen, also wird die Rule die wir ja schon gemeinsam
korrigiert haben als erste gematched also landest Du auf
branche.php?kat=3Dhauptbranche.
Aber was genau willst Du mit dieser Rule erreichen?
Woher nimmst Du Backreference 2? Es gibt nur BRs wenn Du irgendwo
Gruppierst (klammerst), dann werden die BRs entsprechend der
Gruppierungsreihenfolge nummeriert. Keine Klammer keine BRs, so einfach.
Ich würde Dir aber nochmal empfehlen Dein System zu überdenken, was
machst Du wenn Du mal eine zweite Hauptbranche in das System einfügen
willst?
Ich baue meine Seiten so, daß ich komplett alles in einer
Verzeichnisstruktur nach dem Motto
/Gruppe/Subgruppe/Artikel/
habe.
Hierbei sollte auf Menschenlesbarkeit der URLs geachtet werden.
Zusätzlich hänge ich dann noch einen Querystring an in dem ich zB
Session ID anhänge für die Leute die keine Cookies zulassen. Sowie
andere Informationen die nicht für den Inhalt wichtig sind. wie zB
temporär gewählte Themes oä.
Der oben genannte Fall ist auch mit einer Rule abzubacken, die
Auswertung erledigt dann bei mir das Script:
RewriteRule (.*) /index.php?place=3D$1 [QSA,L]
HTH
Norbert