| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

16-04-2010, 23:02
|
|
Nordlicht123
Registrierter Benutzer
|
|
Registriert seit: Mar 2010
Beiträge: 23
|
|
Mod Rewrite URL Weitergeben
Hallo,
ich hoffe, dass der Beitrag hier richtig ist?
Ich habe mich in der letzten Zeit mit Mod Rewrite befasst, um meine URLs zu optimieren.
Ich habe die URL
HTML-Code:
http://www.wmkarten.eu/geo/kontinent.php?kontinent=Afrika&kontinentid=1
in die URL
HTML-Code:
http://www.wmkarten.eu/kontinent/Afrika/1.html
umgewandelt.
Ich habe in der .htaccess folgende Regel dazu eingegeben:
RewriteRule ^kontinent/([^/]*)/([^/]*)\.html$ /geo/kontinent.php?kontinent=$1&kontinentid=$2 [L]
Ich bin jetzt allerdings davon ausgegangen, dass durch diese Regel ein Aufrufen eines Kontinents über mein Menü z.B. Afrika, Asien, Europa etc dazu führt, dass ich zur entsprechenden Seite mit den jeweiligen Daten gelange.
Wenn ich die Menü-Punkte auswähle, komme ich zwar auf die Seiten, die URL wird jedoch weiter im alten Format
HTML-Code:
http://www.wmkarten.eu/geo/kontinent.php?kontinent=Afrika&kontinentid=1
angezeigt.
Die URL hätte doch jetzt so aussehen müssen, oder? Jedenfalls ist es das was ich bezwecken wollte.
[/HTML] in die URL
HTML-Code:
http://www.wmkarten.eu/kontinent/Afrika/1.html
Was habe ich falsch gemacht.
Gruß,
Norbert
|

16-04-2010, 23:12
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Zitat von Nordlicht123
Was habe ich falsch gemacht.
|
Du hast das Grundprinzip nicht verstanden.
mod_rewrite „übersetzt“ Anfragen, die den Server erreichen.
Wer stellt aber diese Anfragen? Der Client.
Wenn du willst, dass dein Browser http://www.wmkarten.eu/kontinent/Afrika/1.html anfordert - dann musst du ihm auch sagen, dass er das tun soll.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

17-04-2010, 08:15
|
|
Nordlicht123
Registrierter Benutzer
|
|
Registriert seit: Mar 2010
Beiträge: 23
|
|
Zitat:
Zitat von wahsaga
Du hast das Grundprinzip nicht verstanden.
mod_rewrite „übersetzt“ Anfragen, die den Server erreichen.
Wer stellt aber diese Anfragen? Der Client.
Wenn du willst, dass dein Browser http://www.wmkarten.eu/kontinent/Afrika/1.html anfordert - dann musst du ihm auch sagen, dass er das tun soll.
|
Hallo,
habe mir schon gedacht, dass das wohl so ist.
Aber wie veränder ich jetzt das Aussehen der URL?
Muss ich da mit "Request Uri" arbeiten?
So sieht z.B. ei Code aus, mit dem ich die Parameter an die nächste Seite übergebe.
PHP-Code:
{ echo '<li><p><a class=blt href="'.$row2->geomenu_link.'?kontinent='.$row->geomenu_name.'&kontinentid='.$row->kontinent_index.'&land='.$row2->geomenu_name.'&landid='.$row2->land_index.'">'.$row2->geomenu_name.'</a></p></li>'
Wie kann ich das jetzt umbauen, damit die URL so aussieht
http://www.wmkarten.eu/kontinent/Afrika/1.html
Gruß,
Norbert
|

17-04-2010, 13:31
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.188
|
|
Zitat:
|
Aber wie veränder ich jetzt das Aussehen der URL?
|
In dem du deine Links auf diese Resource entsprechend anpasst.
Zitat:
So sieht z.B. ei Code aus, mit dem ich die Parameter an die nächste Seite übergebe.
PHP-Code:
echo '<li><p><a class=blt href="'.$row2->geomenu_link.'?kontinent='.$row->geomenu_name. '&kontinentid='.$row->kontinent_index.'&land='.$row2->geomenu_name. '&landid='.$row2->land_index.'">'.$row2->geomenu_name.'</a></p></li>';
Wie kann ich das jetzt umbauen, damit die URL so aussieht
http://www.wmkarten.eu/kontinent/Afrika/1.html
|
Du hast es ja noch nichtmals versucht! Dann erwarte auch nicht, dass wir deine Arbeit machen.  Es sollte nun wirklich ein leichtes sein, den String (mehr ist es nicht!) anzupassen.
Geändert von TobiaZ (17-04-2010 um 23:00 Uhr)
Grund: PHP-Tag geschlossen.
|

24-04-2010, 20:17
|
|
Nordlicht123
Registrierter Benutzer
|
|
Registriert seit: Mar 2010
Beiträge: 23
|
|
Zitat:
Zitat von TobiaZ
In dem du deine Links auf diese Resource entsprechend anpasst.
Du hast es ja noch nichtmals versucht! Dann erwarte auch nicht, dass wir deine Arbeit machen.  Es sollte nun wirklich ein leichtes sein, den String (mehr ist es nicht!) anzupassen.
|
Wie soll ich das verstehen, den Link auf diese Resource anpassen.
Ohne ? und & kann ich doch die Variablen nicht an die nächste Seite übergeben.
Ich möchte Sie aber dennoch übergeben aber nur nicht mehr anzeigen.
Gruß
|

24-04-2010, 20:28
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Zitat von Nordlicht123
Ohne ? und & kann ich doch die Variablen nicht an die nächste Seite übergeben.
|
*seufz*
Du rufst nicht mehr index.php?parameter1=blah¶meter2=blubb auf, sondern /blah/blubb
mod_rewrite „übersetzt“ diesen Request dann in einen mit Parametern, so dass du in deinem Script wie gewohnt über $_GET darauf zugreifen kannst.
Das ist das komplette dahinterliegende Prinzip - wenn du das nicht langsam mal begreifst, dann lass' es lieber damit erst mal.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

24-04-2010, 22:14
|
|
Quetschi
PHP Expert
|
|
Registriert seit: Dec 2004
Beiträge: 2.759
|
|
Geht es dir darum, dass die entsprechenden hrefs auf deiner Seite noch nicht so wie gewünscht aussehen? Dazu musst das Script (ich vermute ja mal, dass es sich da nicht um manuelle Seiten handelt) dass die Links ausgibt eben auch entpsrechend anpassen - wird ja nicht so schwer sein.
__________________
Drelingdo
Krabonse
Simmannamando
|

25-04-2010, 08:27
|
|
Nordlicht123
Registrierter Benutzer
|
|
Registriert seit: Mar 2010
Beiträge: 23
|
|
Zitat:
Zitat von Quetschi
Geht es dir darum, dass die entsprechenden hrefs auf deiner Seite noch nicht so wie gewünscht aussehen? Dazu musst das Script (ich vermute ja mal, dass es sich da nicht um manuelle Seiten handelt) dass die Links ausgibt eben auch entpsrechend anpassen - wird ja nicht so schwer sein.
|
Hallo Quetschi,
tja, für Euch scheint das alles sehr offensichtlich zu sein.
Ich komme allerdings im Moment nicht so recht weiter.
Mein Problem ist, dass die URL wie folgt angezeigt wird:
HTML-Code:
http://www.wmkarten.eu/geo/kontinent.php?kontinent=Afrika&kontinentid=1
Ich hätte aber gerne "sauberen" Code. Der dann so aussieht:
HTML-Code:
http://www.wmkarten.eu/kontinent/Afrika/1.html
Ich habe insgesamt 5 PHP Seiten erstellt, auf denen ich unterschiedliches darstelle.
1.index.php
2.kontinent.php
3.land.php
4.stadt.php
5.sport.php
Wenn jetzt jemand im Menü z.B. Afrika auswählt über gebe ich den Link mit allen Parametern an die Seite Kontinent.php.
PHP-Code:
echo '<li><a href="'.$row3->geomenu_link.'?kontinent='.$row->geomenu_name.'&kontinentid='.$row->kontinent_index.'&land='.$row2->geomenu_name.'&landid='.$row2->land_index.'&stadt='.$row3->geomenu_name.'&stadtid='.$row3->stadt_index.'">'.$row3->geomenu_name.'</a></li>';
Dort werden diese dann von folgenden Parametern "übernommen".
<?php $thisPage=$_GET["kontinent"]; ?>
<?php $pk_iD=$_GET["kontinentid"]; ?>
<?php $pl_iD=$_GET["landid"]; ?>
<?php $p_iD=$_GET["stadtid"]; ?>
All diese Paramter sind zwingend für die Seite, damit ich dort weitere Daten anzeigen kann, die dann meinetwegen nur zu Afrika oder Deutschland etc gehören.
Was muss ich machen, damit ich den Code "sauber" darstellen und die Parameter trotzdem übergeben kann?
Wenn du sagst, ich muss das Script, dass den Code ausgibt anpassen, dann vermute ich, dass dies auf den Seiten index.php, kontinent.php, land.php, etc erfolgen muss?
Wenn ja, was füge ich da ein?
Gruß
|

25-04-2010, 09:08
|
|
Quetschi
PHP Expert
|
|
Registriert seit: Dec 2004
Beiträge: 2.759
|
|
Du musst die eben gepostete (überlange!) Code-Zeile eben so anpassen, dass die Url wie von dir gewünscht aussieht - sehr viel genauer kann man es kaum noch beschreiben
__________________
Drelingdo
Krabonse
Simmannamando
|

25-04-2010, 12:10
|
|
Nordlicht123
Registrierter Benutzer
|
|
Registriert seit: Mar 2010
Beiträge: 23
|
|
Zitat:
Zitat von Quetschi
Du musst die eben gepostete (überlange!) Code-Zeile eben so anpassen, dass die Url wie von dir gewünscht aussieht - sehr viel genauer kann man es kaum noch beschreiben 
|
Hallo,
danke, dass habe ich vor kurzem schon gemacht. Dann fehlen mir jedoch die Variablen auf der nächsten Seite und dadurch erscheinen nicht mehr die Richtigen Daten in den Tabellen der nächsten Seite.
PHP-Code:
{
echo '<li><p><a class=blt href="'.$row2->geomenu_link.'/'.$row->geomenu_name.'/'.$row->kontinent_index.'/'.$row2->geomenu_name.'/'.$row2->land_index.'">'.$row2->geomenu_name.'</a></p></li>'
}
Wenn dass der richtige Weg ist, wie muss ich dann im Seitenscript vorgehen, damit die Variablen wieder aus der URL ausgelesen werden?
Das folgende funktioniert jetzt jedenfalls nicht mehr.
PHP-Code:
<?php $thisPage=$_GET["kontinent"]; ?>
<?php $pk_iD=$_GET["kontinentid"]; ?>
<?php $pl_iD=$_GET["landid"]; ?>
<?php $p_iD=$_GET["stadtid"]; ?>
Gruß
|

25-04-2010, 12:20
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Dann macht dein URL-Rewriting was falsch.
Hier nochmal der "Dienstweg":
- "Schöne" URL verlinken, z. B. <a href="/produkte/festplatten/bluemedia-d-300/">...</a>
- Brower ruft URL auf
- Mod_Rewrite wandelt sie um in z. B. /products.php?cat=hdd&name=bluemedia-d-300
- PHP-Skript ruft die GET-Parameter ab (cat und name)
Bei dir läuft dann also was in Punkt 3 falsch, es sei denn, es gibt noch einen anderen grundlegenden Verständnisfehler.
Gruß,
Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

25-04-2010, 19:08
|
|
Nordlicht123
Registrierter Benutzer
|
|
Registriert seit: Mar 2010
Beiträge: 23
|
|
Zitat:
Zitat von AmicaNoctis
Dann macht dein URL-Rewriting was falsch.
Hier nochmal der "Dienstweg":
- "Schöne" URL verlinken, z. B. <a href="/produkte/festplatten/bluemedia-d-300/">...</a>
- Brower ruft URL auf
- Mod_Rewrite wandelt sie um in z. B. /products.php?cat=hdd&name=bluemedia-d-300
- PHP-Skript ruft die GET-Parameter ab (cat und name)
Bei dir läuft dann also was in Punkt 3 falsch, es sei denn, es gibt noch einen anderen grundlegenden Verständnisfehler.
Gruß,
Amica
|
Hallo,
ich habe jetzt nochmals den ganzen Tag rumprobiert, aber ich komme einfach nicht weiter.
Ich würde mich freuen, wenn hier jemand abschließend helfend eingreifen kann.
Den Link habe ich jetzt mal richtig verkürzt, damit das einfacher nachzuvollziehen ist.
Ich möchte jetzt nur die Variable des Kontinent-Name an die Seite kontinent.php ($row->geomenu_link) übergeben:
Fall 1: (durch die Einbindung von ' ?kontinent' im folgenden link wird die Variable auch an die nächste Seite übergeben)
PHP-Code:
echo '<li><a href="'.$row->geomenu_link.'?kontinent='.$row->geomenu_name.'">'.$row->geomenu_name.'</a></li>'
Der Link würde dann z.B. bei der Auswahl von Afrika so aussehen:
HTML-Code:
http://www.wmkarten.eu/geo/kontinent.php?kontinent=Afrika
Ich kann mir die Variable dann auf der Seite kontinent.php wie folgt aus der URL abholen:
PHP-Code:
<?php $thisPage=$_GET["kontinent"]; ?>
Da ich aber das "?" und "kontinent" nicht im Link haben möchte gehe ich wie folgt vor:
Fall 2: (ich ersetzte im folgenden Link " ?kontinent" durch '/')
PHP-Code:
echo '<li><a href="'.$row->geomenu_link.'/'.$row->geomenu_name.'">'.$row->geomenu_name.'</a></li>'
Jetzt ist der Link zwar um das ? bereinigt, aber jetzt ist es leider nicht mehr möglich, mit der Abfrage
PHP-Code:
<?php $thisPage=$_GET["kontinent"]; ?>
die Variable abzurufen?
Wäre es möglich mir die zwei Zeilen für die .htaccess zu schreiben, so dass ich auf diesem Grundbaustein aufbauen kann.
Ich habe ettliches versucht, auch aus diesen zahlreichen Beispielen:
Tipps und Tricks mit mod_rewrite - praktische Beispiele - Suchmaschinenoptimierung Österreich suchmaschinentricks.at
Bin leider nicht klar gekommen.
Muss ich eventuell auch auf der Seite kontinent php in der die Variable abgeholt werden soll und auf der die Ausgabe der Daten erfolgt etwas anpassen?
Danke und Gruß
|

25-04-2010, 19:32
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
1. Wie sieht denn deine .htaccess aus und wo liegt sie?
2. Wird mod_rewrite von deinem Server überhaupt unterstützt?
3. Bitte brich den Code um!
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
Geändert von AmicaNoctis (25-04-2010 um 19:34 Uhr)
|

25-04-2010, 19:57
|
|
Nordlicht123
Registrierter Benutzer
|
|
Registriert seit: Mar 2010
Beiträge: 23
|
|
Zitat:
Zitat von AmicaNoctis
1. Wie sieht denn deine .htaccess aus und wo liegt sie?
2. Wird mod_rewrite von deinem Server überhaupt unterstützt?
3. Bitte brich den Code um!
|
Hallo,
1. Die Datei liegt im Hauptverzeichnis da wo auch die index.php liegt
Im Moment habe ich nur einige Domain-Weiterleitungen drin.
Als ich mit mod_rewrite experimentiert habe, hatte ich die sogar rausgenommen, um auszuschließen, dass darin ein Fehler liegt. Im Moment habe ich keine Rule bezüglich mod_rewrite in der Datei, da bei allem was ich versucht habe nur Mist raus kam.
2. ja
3. jetzt nochmals umgebrochen.
Den Link habe ich jetzt mal richtig verkürzt,
damit das einfacher nachzuvollziehen ist.
Ich möchte jetzt nur die Variable des
Kontinent-Name an die Seite kontinent.php ($row->geomenu_link) übergeben:
Fall 1: (durch die Einbindung von ' ?kontinent'
im folgenden link wird die Variable auch an die nächste Seite übergeben)
PHP-Code:
echo '<li> <a href="'.$row->geomenu_link.' ?kontinent='.$row->geomenu_name.'"> '.$row->geomenu_name.'</a></li>'
Der Link würde dann z.B. bei der Auswahl von Afrika so aussehen:
[HTML][http://www.wmkarten.eu/geo/kontinent.php?kontinent=Afrika/HTML]
Ich kann mir die Variable dann auf der Seite kontinent.php wie folgt aus der URL abholen:
PHP-Code:
<?php $thisPage=$_GET["kontinent"]; ?>
Da ich aber das "?" und "kontinent" nicht im Link haben möchte gehe ich wie folgt vor:
Fall 2: (ich ersetzte im folgenden Link " ?kontinent" durch '/')
PHP-Code:
echo '<li><a href="'.$row->geomenu_link.' /'.$row->geomenu_name.'"> '.$row->geomenu_name.'</a></li>'
Jetzt ist der Link zwar um das "?" und "kontinent" bereinigt, aber jetzt ist es leider nicht mehr möglich, mit der Abfrage
PHP-Code:
<?php $thisPage=$_GET["kontinent"]; ?>
die Variable abzurufen?
Wäre es möglich mir die zwei Zeilen für die .htaccess zu schreiben, so dass ich auf diesem Grundbaustein aufbauen kann.
Ich habe ettliches versucht, auch aus diesen zahlreichen Beispielen:
Tipps und Tricks mit mod_rewrite - praktische Beispiele - Suchmaschinenoptimierung Österreich suchmaschinentricks.at
Bin leider nicht klar gekommen.
Muss ich eventuell auch auf der Seite kontinent php in der die Variable abgeholt werden soll und auf der die Ausgabe der Daten erfolgt etwas anpassen?
Danke und Gruß
|

25-04-2010, 20:07
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Mit Code umbrechen meinte ich nicht, dass du alles nochmal posten sollst und den sowieso kurzen Code umbrichst, sondern diejenigen, die schon seit längerem stören. (Klick einfach auf die rote Meldung in meiner Signatur.)
Du machst jetzt folgendes: Du schreibst jetzt eine .htaccess und postest die dann. Davon ausgehend sehen wir weiter, wie man dir helfen kann.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|