mod_rewrite und parameter bzw. url-auflösung
frankx
- webserver
Hellihello,
in einer .htaccess habe ich:
RewriteEngine on
RewriteRule (.*) rewrite.php?dsi=$1
wenn ich example.com/asdf/asdf aufrufe, gibt das rewrite.php mit $_SERVER["REDIRECT_URL"] "/asdf/asdf" aus. Rufe ich ohne Ordner auf, dann gibt es "/" aus.
var_dump($_REQUEST); gibt "dsi=rewrite.php" aus. Kapier ich nicht, macht aber nix, denn im redirect_url steht ja alles drin.
Fängt die redirect_url _immer_ mit "/" an? Und ist es richtig, dass ich die dann zB. einfach mit explode() auseinandrepflücken kann und die Parameter im Array bearbeite, oder gibts da eine elegantere Methode oder eine andere Konvention?
Dank und Gruß,
frankx
RewriteEngine on
Hier möchtest Du noch "RewriteBase /" einfügen.
RewriteRule (.*) rewrite.php?dsi=$1
wenn ich example.com/asdf/asdf aufrufe, gibt das rewrite.php mit $_SERVER["REDIRECT_URL"] "/asdf/asdf" aus. Rufe ich ohne Ordner auf, dann gibt es "/" aus.
var_dump($_REQUEST); gibt "dsi=rewrite.php" aus. Kapier ich nicht,
Nachdem die Original-URL in "rewrite.php?dsi=$1" abgeändert wurde, wird die URL vom Webserver (intern) nochmals verarbeitet und kommt somit auch nochmals an Deiner RewriteRule-Zeile vorbei, die natürlich auch auf rewrite.php passt. Deshalb bekommst Du a) als aktuelle URL "rewrite.php" ausgegeben und b) eine Variable namens REDIRECT_URL (weitergeleitete (!) URL) geliefert, in der Original-URL steht.
Die hier drohende Endlosschleife bricht mod_rewrite erfreulicherweise von alleine ab.
Fängt die redirect_url _immer_ mit "/" an?
Absolute Pfade fangen immer mit einem Schrägstrich an, ja.
Und ist es richtig, dass ich die dann zB. einfach mit explode() auseinandrepflücken kann und die Parameter im Array bearbeite, oder gibts da eine elegantere Methode
Nein.
Und ist es richtig, dass ich die dann zB. einfach mit explode() auseinandrepflücken kann und die Parameter im Array bearbeite, oder gibts da eine elegantere Methode
Nein.
Das sollte natürlich "Ja, und nein (auch wenn es sicher irgendwie auf den Anwendungsfall ankommt)." lauten, sorry.
Hellihello
Und ist es richtig, dass ich die dann zB. einfach mit explode() auseinandrepflücken kann und die Parameter im Array bearbeite, oder gibts da eine elegantere Methode
Nein.
Das sollte natürlich "Ja, und nein (auch wenn es sicher irgendwie auf den Anwendungsfall ankommt)." lauten, sorry.
class URL {
var $Domain;
var $topleveldomain;
var $Hauptdomain;
var $Subdomainnamen=Array();
var $Parameter=Array();
function __construct() {
$this->Domain=$_SERVER["HTTP_HOST"];
$Domainteile=explode(".",$this->Domain);
$Anzahl_Domainteile = count($Domainteile);
$this->topleveldomain=($Domainteile[$Anzahl_Domainteile-1]);
unset($Domainteile[$Anzahl_Domainteile-1]);
$this->Hauptdomain=($Domainteile[$Anzahl_Domainteile-2]);
unset($Domainteile[$Anzahl_Domainteile-2]);
$this->Subdomainnamen=$Domainteile;
$lokalerPfadname=substr($_SERVER["REDIRECT_URL"],1);
$this->Parameter=explode("/", $lokalerPfadname);
}
}
naja das Auseinandernehmen erstmal auch (also der Anwendungsfall meine ich)?
Dank und Gruß,
frankx