mod_rewrite
jens65m
- php
Hallo Community,
kurze Frage, hab zwar Google angestrengt werde aber nicht fündig.
Wie kann ich mit hilfe von mod_rewirte realisieren, dass der Pfad
http://www.example.com/index.php?option=wert&p=0
bzw.
http://www.example.com/?option=wert&p=0
umgeschrieben wird in
http://www.example.com/wert/0
dass also der Wert von "option" immer an erster Stelle und der Wert von "p" immer an zweiter Stelle erscheint.
Lg, Dennis
Hallo,
Wie kann ich mit hilfe von mod_rewirte realisieren, dass der Pfad
http://www.example.com/index.php?option=wert&p=0
bzw.
http://www.example.com/?option=wert&p=0umgeschrieben wird in
http://www.example.com/wert/0
bitte geh nochmal in dich: Bist du sicher, dass du es nicht genau umgekehrt haben möchtest? Denn was du beschreibst, wäre sehr untypisch -normalerweise möchte man ja einfache, "schöne" URLs haben, und diese dann intern auf die technisch erforderliche Schreibweise umschreiben.
Ciao,
Martin
hopla, selbstverständlich mein ich das ungekehrt.
mittlerweile habe ich auch folgendes gefunden:
RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)$ /index.php?option=$1&keyword=$2 [L]
das ganze würde dann aus
index.php?option=search&keyword=test
/search/test
machen. Nur habe ich selbstverständlich auch andere Funktionen.
Zb.
index.php?option=login&username=ben82
(schlechtes Beispiel ich weiß). Leider wird dass dann aber nicht mehr umgeschrieben.
Muss ich jede Regel einzeln definieren?
Lg, Jens
RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)$ /index.php?option=$1&keyword=$2 [L]
leider funktioniert das leider auch nicht.
Error 500
woran liegt das?
lg
Hello,
RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)$ /index.php?option=$1&keyword=$2 [L]leider funktioniert das leider auch nicht.
Error 500
Darübver mache ich mir jetzt mal keine Gedanken.
Aber ich möchte doch mal darauf hinweisen, dass man für diesen Fall überhaupt keine Rewrite-Engine benötigt. Es wird ja immer dieselbe Stammressource (index.php) angesprochen. Warum lässt Du DIE dann nicht gleich die Auswertung vornehmen?
In $_SERVER['PATH_INFO'] stecken deine gesuchten Parameter, wenn das Feature 'Pathinfo' nicht ausgeschaltet ist. Das Script (index.php) kann diese Parameter also direkt extrahieren. Das könnte jetzt z.B. auch mittels einer Datenbankabfrage stattfinden
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Darübver mache ich mir jetzt mal keine Gedanken.
Aber ich möchte doch mal darauf hinweisen, dass man für diesen Fall überhaupt keine Rewrite-Engine benötigt. Es wird ja immer dieselbe Stammressource (index.php) angesprochen. Warum lässt Du DIE dann nicht gleich die Auswertung vornehmen?
Vielleicht weil man nicht will, dass für jede Anfrage an den Vhost der PHP Interpreter benötigt wird? Das vom OP verwendete Pattern ist nicht optimal, aber es bietet bereits die Möglichkeit, diesen (immensen) Overhead zu verhindern.
Hello,
Darübver mache ich mir jetzt mal keine Gedanken.
Aber ich möchte doch mal darauf hinweisen, dass man für diesen Fall überhaupt keine Rewrite-Engine benötigt. Es wird ja immer dieselbe Stammressource (index.php) angesprochen. Warum lässt Du DIE dann nicht gleich die Auswertung vornehmen?Vielleicht weil man nicht will, dass für jede Anfrage an den Vhost der PHP Interpreter benötigt wird? Das vom OP verwendete Pattern ist nicht optimal, aber es bietet bereits die Möglichkeit, diesen (immensen) Overhead zu verhindern.
Ach, da habe ich wohl überlesen, dass keine PHP-Engine zum Einsatz kommt, sondern nur die Ressource zufällig 'index.php' heißt?
Da schmeißen wir mal lieber die Rewrite-Engine an und mappen hin, damit es an einer anderen Stelle wieder zurück gemappt werden kann. Irgendwie muss man die Server ja beschäftigen.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Ach, da habe ich wohl überlesen, dass keine PHP-Engine zum Einsatz kommt, sondern nur die Ressource zufällig 'index.php' heißt?
You didn't get it.
Hello,
Ach, da habe ich wohl überlesen, dass keine PHP-Engine zum Einsatz kommt, sondern nur die Ressource zufällig 'index.php' heißt?
You didn't get it.
Bahnhof?
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Es ist tatsächlich so, dass die index.php die einzige Datei ist, die verwendet wird.
Die mod-rewrite ist aktiviert. in der .htaccess steht sonst nichts. andere umschreibungen funktionieren komischerweise?!
lg
Also die RewriteRule soll folgende funktion haben:
aus der Adresse:
/irgendwas.php?var1=value&var2=anothervalue$var3=onemore...
ist das möglich die RewriteRule so zu gestallten, dass die Umschreibung auf
/value/anothervalue/onemore
auch für weitere "var"s also Variablen gilt.
Diese Variablen können aber auch unterschiedliche Namen haben.
Nochmal konkret:
Ist es möglich mit einer RewriteRule beide Umschreibung zu ermöglichen:
/index.php?car=fiord&color=red
/service.php?computer=pinapple&hdd=120
auf
/fiord/red
/pinapple/120
lg, Jens
Das Problem ist nämlich, dass ich teilweise Verschieden Parameter verwenden möchte.
Zb.
/index.php?option=search&keyword=suchanfrage -> /search/suchanfrage4
/index.php?option=newsletter&username=benbeispiel -> /newsletter/benbeispiel
lg
Hello,
Das Problem ist nämlich, dass ich teilweise Verschieden Parameter verwenden möchte.
Was hältst Du von 'if'?
if (isset($_SERVER['PATH_INFO']))
{
$page = auswerten_path_info();
}
else
{
$page = auswerten_url_parameter();
}
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Was hältst Du von 'if'?
if (isset($_SERVER['PATH_INFO']))
{
$page = auswerten_path_info();
}
else
{
$page = auswerten_url_parameter();
}
versteh ich jetzt nicht so ganz. es geht mir ja darum den pfad umzuschreiben und nicht um die auswertung.
lg
Hello,
Was hältst Du von 'if'?
if (isset($_SERVER['PATH_INFO']))
{
$page = auswerten_path_info();
}
else
{
$page = auswerten_url_parameter();
}versteh ich jetzt nicht so ganz. es geht mir ja darum den pfad umzuschreiben und nicht um die auswertung.
Und für wen willst Du den Pfad umschreiben, wenn ihn keiner auswertet?
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
ich will einfach nur, dass die Pfade umgeschrieben werden.
Von
/index.php?option=test&var1=value1&var2=value2...
in
/test/value1/value2
und das soll geschehen egal wie der Parameter heißt.
Also die RewriteRule soll auch für
/index.php?option=test&xy=1&z=4
gelten und
/test/1/4
daraus machen.
Ist das mit einer RewriteRule möglich.
Und klar sollen die GET-Parameter ausgewertet werden.
Nur versteh ich dein Skript nicht. Das hilft mir doch nicht den Pfad umzuschreiben oder?!
Lg, jens
Hello,
ich will einfach nur, dass die Pfade umgeschrieben werden.
Von/index.php?option=test&var1=value1&var2=value2...
in
/test/value1/value2
Ich dachte, anders herum soll es sein?
https://forum.selfhtml.org/?t=200634&m=1352383
Und da stellt sich dann die Frage, warum es noch von der Rewrite-Engine umgeschrieben werden soll, wenn es doch im PHP-Script sowieso beides genauso brauchbar ist?
Schreib die Parameter doch im PHP-Script um, wenn dies überhaupt notwendig ist.
if (isset($_SERVER['PATH_INFO']))
{
## Pathinfo zerlegen in einzelne Parameter
$_pathinfo = explode('/',$_SERVER['PATH_INFO']);
}
else
{
## alternative Vorgehensweise
## ...
}
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hello,
Ich dachte, anders herum soll es sein?
selbstverständlich
Schreib die Parameter doch im PHP-Script um, wenn dies überhaupt notwendig ist.
if (isset($_SERVER['PATH_INFO']))
{
## Pathinfo zerlegen in einzelne Parameter
$_pathinfo = explode('/',$_SERVER['PATH_INFO']);
}
else
{
## alternative Vorgehensweise
## ...
}
danke jetzt hab ichs gerafft
nur funktionert dass dann auch wenn ich nicht den pfad
http://www.example.com/subfolder/file.php/par1/par2/par3
sondern
http://www.example.com/subfolder/par1/par2/par3
verwende. Ich denke nicht.?!
Lg
Hallo,
RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)$ /index.php?option=$1&keyword=$2 [L]leider funktioniert das leider auch nicht.
Error 500woran liegt das?
Das könnte an vielem liegen - versuche Zugriff auf das Error-Log des Apache-Webservers zu bekommen.
Mögliche Ursachen:
* mod_rewrite ist nicht installiert
* mod_rewrite ist installiert, aber nicht geladen
* Du darfst laut zentraler Serverkonfiguration mod_rewrite nicht
konfigurieren.
* Da steht noch etwas anderes in der .htaccess, was Du laut zentraler
Konfiguration nicht tun darfst.
* ...?
Viele Grüße,
Christian