php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 20.08.2007, 18:06  
obi
Erfahrener Benutzer
 
Registriert seit: 26.06.2004
Beiträge: 270
obi
Standard modrewrite get variable

Hallo, wie muss ich meine modrewrite datei einstellen, dass mitaufgerufene get variablen verarbeitet werden können?

Ich habe bisher eine php seite die ein user mit

http://www.meinedomain/seite.html

aufrufen kann.

In der Rewrite datei:
Zitat:
RewriteRule ^([0-9a-zA-Züäö_\-]*).html$ seite.php?id=$1
Auf dieser PHP Seite soll ein Alphabet stehen, die buchstaben sind dann jeweils links auf die selber seite mit variablen anhang.
Ohne modrewrite wäre das z.B.

seite.php?buchstabe=a

aber die mrw datei fängt das irgendwie ab und die variable geht verloren.
Ich hab auch schon

Zitat:
RewriteRule ^([0-9a-zA-Züäö_\-]*).html?buchstabe=([a-zA-Z]) seite.php?id=$1&buchstabe=$2
probiert, das funktioniert aber nicht.
obi ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 20.08.2007, 21:38  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo obi,

wenn du das absolut generisch haben möchtest, schreibst du in die .htaccess-Datei (nicht mod_rewrite-Datei!)

Code:
RewriteEngine On
RewriteRule ^(.*) /seite.php?request_string=$1
Dann kannst du in der Datei seite.php die GET-Variable request_string entsprechend auswerten und deine benötigten Werte extrahieren, oder ein komplettes Rewrite des Strings machen und die zerlegten Werte in das GET-Array zurückschreiben. Das kannst du ganz transparent für deine Anwendung machen, falls du das _vor_ der eigentlichen Funktionalität einbindest.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 21.08.2007, 01:17  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Die RewriteRule's von ModRewrite sind einzig RegExp Regeln. Wie immer solltest du bei RegExp Regeln nicht zu streng sein, denn RegExp setzt knallhart um, was du ihm vorsetzt. Ein (.*) für einen beliebigen String ist also viel sinnvoller als ([0-9a-zA-Züäö_\-]*)

Und wie immer für RegExp gilt, wenn dein RegExp nicht trifft, obwohl er es sollte, musst du die Regeln eben runterbrechen, bis er trifft. Der Fehler liegt immer bei dir.

Du möchtest eine beliebig seite.html?parameter matchen? Hierfür reicht
^(.*)\.html[?]?(.*)$ bootstrap.php?seite=$1&$2
doch bereits völlig aus. alles vor .html = $1, alles nach .html = $2 (ohne ?)

dr.e.'s Lösung verwende ich eigentlich am Liebsten, denn dann kann ich über PHP festlegen und aufteilen, wie und was ich möchte.
Zergling-new ist offline  
Alt 21.08.2007, 02:06  
obi
Erfahrener Benutzer
 
Registriert seit: 26.06.2004
Beiträge: 270
obi
Standard

Ich weiß nicht was ich falsch mache, ich habe daher mal eine ganz einfache test.php angelegt:

Zitat:
<body>



<?
echo "".$_GET["seite"]."";
echo "<h1>".$_GET["parameter"]."</h1>";
?>
</p>




link
</p>
</body>
die .htaccess datei sieht wie zergling schon geschrieben hat so aus:

Code:
Options +FollowSymlinks
RewriteEngine On
RewriteRule ^(.*).html[?]?(.*)$ test.php?seite=$1&$2
Klick ich aber auf den Link wird mir nur test ausgegeben.
obi ist offline  
Alt 21.08.2007, 02:33  
Erfahrener Benutzer
 
Registriert seit: 16.07.2005
Beiträge: 1.007
PHP-Kenntnisse:
Fortgeschritten
brian johnson befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von obi
Klick ich aber auf den Link wird mir nur test ausgegeben.
klar wird nur test ausgegeben, denn php baut $_GET so auf:

daraus ergibt sich:

PHP-Code:
$_GET = Array(
'seite' 1
'parameter' 2

um dein script zum funktionieren zu bringen, musst du also deine rewrite rule ändern:

Code:
Options +FollowSymlinks 
RewriteEngine On 
RewriteRule ^(.*).html[?]?(.*)$ test.php?seite=$1&parameter=$2
brian johnson ist offline  
Alt 21.08.2007, 08:56  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Da hast du unrecht brian. Aber ich habe meine Lösung nocheinmal im RegExp-Matcher getestet (kanns gerade nicht selber testen) und es funktioniert so wie ich es angegeben habe. Hast du andere Rules, die das ganze überlagern? Was gibt var_dump($_GET) aus?
Zergling-new ist offline  
Alt 21.08.2007, 13:08  
obi
Erfahrener Benutzer
 
Registriert seit: 26.06.2004
Beiträge: 270
obi
Standard

1) Ich hab keine anderen Rules, die drei zeilen oben sind die einzigen in meiner .htacces datei

2) var_dump($_GET) gibt aus:
Zitat:
array(1) { ["seite"]=> string(4) "test" }
Wenn ich es wie brian johnson meint mache, dann ist im dump zwar parameter enthalten, aber immer leer, egal was ich anhänge also schätze ich, dass irgendwie der parameter nicht richtig übergeben wird.
Aber ihr seid die Profis und sorry für die Mühe.

Edit:
Es muss irgendwie am Fragezeichen liegen, rufe ich die seite mit
http://www.domain.de/test.htmlparameter=123

auf, dann gibt var_dump($_GET):
Zitat:
array(2) { ["seite"]=> string(4) "test" ["parameter"]=> string(3) "123" }
aus
obi ist offline  
Alt 21.08.2007, 13:30  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Ich sehe gerade, dass ModRewrite alles nach und inklusive Fragezeichen ignoriert.
Somit kannst du die Extra-Parameter wohl nur aus dem $_SERVER["REQUEST_URI"] extrahieren.
Zergling-new ist offline  
Alt 21.08.2007, 14:29  
obi
Erfahrener Benutzer
 
Registriert seit: 26.06.2004
Beiträge: 270
obi
Standard

okay, danke. dann muss ich's wohl so machen.
Das fragezeichen wegzulassen wäre wohl keine gute idee, wegen google usw
obi ist offline  
Alt 21.08.2007, 15:21  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Zitat:
Das fragezeichen wegzulassen wäre wohl keine gute idee, wegen google usw
Quatsch! Gerade Google mag eher statische URLs _ohne_ Fragezeichen. Warum meinst du schlagen wir uns hier mit Slash-URLs herum?
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
ModRewrite ohne ModRewrite Chriz PHP-Fortgeschrittene 2 05.07.2008 21:30
Variable in SQL Anweisung verwenden Beatbox PHP Tipps 2006 2 08.08.2006 16:32
Variable in $this Variable der Klasse benutzen PHP Tipps 2006 5 03.05.2006 20:04
variable wird nich erkannt. Marian PHP Tipps 2006 1 03.04.2006 21:25
Variable durch 2. Variable bestimmen Quagga PHP Tipps 2005-2 11 26.10.2005 17:34
[Erledigt] Variable wird nicht erkannt bzw ausgegeben. PHP Tipps 2005-2 4 25.10.2005 18:54
Variable als Variable behandeln ohne den Wert zu verwenden Pain-maker PHP Tipps 2005-2 4 11.09.2005 17:28
Variable in Objekt php1 HTML, Usability und Barrierefreiheit 2 25.06.2005 08:08
Variable in Variable Matthiasnet PHP Tipps 2005 6 20.03.2005 23:28
If variable $1 vorhanden dann nimm die, if variable $2 .... PHP Tipps 2005 8 13.02.2005 20:16
Variable in einer Variable Beatbox PHP Tipps 2005 7 15.01.2005 15:55
Warum wird Variable nicht übergeben??? Anuschka PHP Tipps 2005 2 06.01.2005 13:22
[Erledigt] $_SESSION verwandelt variable auf einem Server in ein Array PHP-Fortgeschrittene 2 16.12.2004 13:25
[Erledigt] Variable erst später definieren? PHP Tipps 2004-2 10 04.12.2004 20:23
2 Schleifen durchlaufen PHP Tipps 2004 1 14.09.2004 14:33

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mod_rewrite get, mod rewrite get, mod rewrite get parameter, mod_rewrite get variablen, mod_rewrite variablen, mod_rewrite $_get, htaccess mod_rewrite get, mod_rewrite get variable, modrewrite get, mod rewrite $_get, get variablen htaccess, htaccess get variablen, mod_rewrite get parameter, mod rewrite get variablen, mod_rewrite get variables, get mod_rewrite, get variablen mod_rewrite, $_get mod_rewrite, url rewrite get, get variable mod rewrite

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:04 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.