.htaccess
stefanR
- sonstiges
0 Gunnar Bittersmann0 suit
0 martin_s1 suit
Guten Abend, ich habe folgende Rewrite-Rule für meinen Server definiert:
Options +FollowSymLinks
RewriteEngine on
RewriteRule http://example.org/$ /index.php?p=$1
Es soll also example.org/test/ eingegeben werden als URL und intern aufgerufen werden: example.org/index.php?p=test
Dies funktioniert aber nicht, bekomme jedes Mal einen "Internal Server Error".
Woran liegt das?
Wie muss die htaccess richtig heißen?
Gruß
@@stefanR:
nuqneH
RewriteEngine on
RewriteRule http://example.org/$ /index.php?p=$1
[…]
Dies funktioniert aber nicht […] Woran liegt das?
$1 bezieht sich auf den ersten http://de.selfhtml.org/perl/sprache/regexpr.htm#merken@title=geklammerten Teilausdruck; einen solchen gibt es bei dir aber nicht.
Wie muss die htaccess richtig heißen?
Besser nicht RewriteRule
, sondern [link:http://httpd.apache.org/docs/2.2/mod/mod_alias.html#redirectmatch@title=RedirectMatch]
verwenden.
Qapla'
Besser nicht
RewriteRule
, sondern[link:http://httpd.apache.org/docs/2.2/mod/mod_alias.html#redirectmatch@title=RedirectMatch]
verwenden.
Wenn es nur um Pfade geht, ist das kein schlechter Rat - oft hat man aber verschiedene Umschreibregeln um z.B. alte Links auf neue Umzubieten. Da ist es dann oft schwerer zu lesen, wenn man mod_alias und mod_rewrite mischt - was mit mod_alias eben nicht geht, ist auf den Query-String zu reagieren.
Guten Abend, ich habe folgende Rewrite-Rule für meinen Server definiert:
Options +FollowSymLinks
RewriteEngine on
RewriteRule http://example.org/$ /index.php?p=$1Es soll also example.org/test/ eingegeben werden als URL und intern aufgerufen werden: example.org/index.php?p=test
Dies funktioniert aber nicht, bekomme jedes Mal einen "Internal Server Error".
Woran liegt das?
Wie muss die htaccess richtig heißen?Gruß
RewriteRule http://example.org/(.+)/$ /index.php?p=$1
oder
RewriteRule http://example.org/([a-zA-Z]+)/$ /index.php?p=$1
usw.. je nachdem ob du bestimmte Zeichen ausschließend willst.
Du kannst auch in deiner Webseite <base tag angeben zb
<base href="http://example.org/" />
und dann
RewriteRule ^(.+)$ /index.php?p=$1
so in die Richtung
RewriteRule http://example.org/(.+)/$ /index.php?p=$1
Das Pattern-Argument beeinhaltet nur den Pfad - das wird nicht funktionieren.
RewriteRule http://example.org/([a-zA-Z]+)/$ /index.php?p=$1
Siehe oben.
Du kannst auch in deiner Webseite <base tag angeben zb
<base href="http://example.org/" />
mod_rewrite interessiert sich nur für HTTP-Requests und nicht was irgendwie im HTML (oder sonstigen Ressourcen) steht
und dann
RewriteRule ^(.+)$ /index.php?p=$1
Schon eher - aber wo zu Anfang und Ende kennzeichnen, den Ausdruck speichern und dann anhängen wenns doch dein .* oder .+ und dann $0 auch tut?
so in die Richtung