Dynamisches URL Rewriting

Alles, was den Apache betrifft, kann hier besprochen werden.

Dynamisches URL Rewriting

Postby Klausi » 15. August 2008 13:54

Hallo

Habe im Web viele Tutorials zu .htaccess (rewriting) gefunden, konnte mein Problem aber noch nicht damit lösen.

Habe URLs wie Z. B.

vorlage.php?seite=index
vorlage.php?seite=leistung

Möchte aus diesen hässlichen Dingern URLs in der Form index.htm resp. leistung.htm machen.

Geht das? Wie?

Gruss

P.S.: Kennt jemand ein deutsches Tutorial oder Buch, welches dieses Thema profund von A bis z erklärt?
Klausi
 
Posts: 18
Joined: 23. July 2008 15:36

Postby Wiedmann » 15. August 2008 14:19

Habe URLs wie Z. B. ... vorlage.php?seite=leistung ... Möchte aus diesen ... leistung.htm machen.

"mod_rewrite" arbeitet anders herum. Wenn dein Browser auf "leistung.htm" zugreift, macht es intern daraus "vorlage.php?seite=leistung".

Dafür das in deinem HTML-Quellcode "leistung.htm" steht, obwohl dein Script auf "vorlage.php?seite=leistung" reagiert, musst du selbst sorgen.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby glitzi85 » 15. August 2008 14:19

Code: Select all
RewriteRule ^(.*)\.htm$ vorlage.php?seite=$1


mfg glitzi
User avatar
glitzi85
 
Posts: 1920
Joined: 05. March 2004 23:26
Location: Dahoim

Postby Klausi » 16. August 2008 09:25

Hallo

Besten Dank für die Antworten!

Dafür das in deinem HTML-Quellcode "leistung.htm" steht, obwohl dein Script auf "vorlage.php?seite=leistung" reagiert, musst du selbst sorgen.


Wie macht man das mit PHP? Gibts ein Fachwort zu diesem Thema? Mit einem Stichwort kann ich dann weiter recherchieren.

Gruss
Klausi
 
Posts: 18
Joined: 23. July 2008 15:36

Postby Nobbie » 17. August 2008 12:12

>Wie macht man das mit PHP?

Grausame Frage...

Du mußt das machen:

In Deinen Scripten od. HTML Dateien steht irgendwo so etwas:

Code: Select all
<a href="http://www.blabla.de/vorlage.php?seite=leistung">Hier gehts zur Leistung</a>


und Du mußt mit einem Editor das ändern, dass es nun so aussieht:

Code: Select all
<a href="http://www.blabla.de/leistung.html">Hier gehts zur Leistung</a>


Und weil es aber auf Deiner Seite ja kein "leistung.html" gibt, mußt Du dann in der .htaccess die Rule verfassen, welche aus dem leistung.html das vorlage.php?seite=leistung macht (s. glitzis Beitrag).
Nobbie
 
Posts: 13183
Joined: 09. March 2008 13:04

Postby Klausi » 17. August 2008 13:36

Hallo Nobbie

Besten Dank für Deine Antwort!

Ich denke wir schreiben (eventl.) nicht vom gleichen Thema.

Meine Frage lautet:
Gibt es irgendeine Technik, die meine Links in der Form vorlage.php?seite=leistung auch optisch im Browser als leistung.htm anzeigt?
Sprich der Surfer bekommt immer nur die "geschönten" Links zu sehen.

Gruss
Klausi
 
Posts: 18
Joined: 23. July 2008 15:36

Postby Nobbie » 17. August 2008 14:35

Klausi wrote:Ich denke wir schreiben (eventl.) nicht vom gleichen Thema.


Doch, ich denke nur, dass Du bereits "Wiedmanns" Antwort nicht verstanden hast.

Gibt es irgendeine Technik, die meine Links in der Form vorlage.php?seite=leistung auch optisch im Browser als leistung.htm anzeigt?


Nein.

Sprich der Surfer bekommt immer nur die "geschönten" Links zu sehen.


Der Surfer bekommt die Links zu sehen, die im Dokument drin stehen. Die zeigt der Browser an, nicht Apache (der ist da noch gar aktiv). Und wenn Du "schöne Links" sehen willst, musst Du schöne Links schreiben (das ist exakt auch die Aussage von "Wiedmann"). Da sich aber hinter dem "schönen Link" auf dem Server in Wirklichkeit keine Dokumente verbergen, muss dann auf dem Server mit mod_rewrite aus dem schönen Link die häßliche Wahrscheit aufgerufen werden (das bekommt der Browser nicht mit und niemand sieht, dass in Wirklichkeit nicht der schöne Link, sondern das häßliche Script aufgerufen wird).

So und nur so funktioniert das mit "schönen Links".
Nobbie
 
Posts: 13183
Joined: 09. March 2008 13:04

Postby Klausi » 18. August 2008 14:07

Hallo Nobbie

Besten Dank für Deine Infos. Jetzt ist mir vieles klarer.

Mit welcher Technik macht man "schöne dynamische Links"? In Wordpress z. B. heissen die Links standardmässig etwa so:
?p=100

Via "Permalink-Einstellungen" erstellt dann Wordpress z. B.
index.php/2008/08/18/1-testbeitrag/
oder
index.php/1-testbeitrag/

Ist hier ausschliess PHP im Einsatz um die URLs umzuschreiben?

Gruss
Klausi
 
Posts: 18
Joined: 23. July 2008 15:36

Postby glitzi85 » 18. August 2008 15:01

Nein, Wordpress verwendet ebenfalls mod_rewrite. Es geht auch gar nicht anders. Wenn du im Client eine Adresse aufrufst, versucht der Webserver standardmäßig diese Adresse auf das Dateisystem abzubilden (relativ zum DocumentRoot).

Wenn du also http://example.com/wordpress/2008/08/18 ... index.html eingibst, und example.com zeigt auf C:\www, dann versucht der Apache diese Datei zu öffnen: C:\www\wordpress\2008\08\18\1-testbeitrag\index.html
Da diese natürlich nicht existiert (schon aufgrund der Tatsache, dass Wordpress seine Daten in der Datenbank speichert), wird mod_rewrite verwendet. Die Regel besagt dann, dass aus der obigen http-Adresse dieser Aufruf gemacht wird: http://example.com/wordpress/index.php? ... estbeitrag
Ist jetzt natürlich nur ein Beispiel, keine Ahnung wie Wordpress das genau umschreibt, aber so ähnlich könnte es aussehen.

Für den Benutzer ist das nicht ersichtlich. Wer sich auskennt könnte jetzt aber genausogut http://example.com/wordpress/index.php? ... estbeitrag in seinen Browser eingeben und würde auf genau die gleiche Seite kommen wie wenn er die schöne URI eingibt. Damit da niemand drauf kommt, werden im Quellcode nur die schönen URIs verwendet.

mfg glitzi
User avatar
glitzi85
 
Posts: 1920
Joined: 05. March 2004 23:26
Location: Dahoim

Postby Klausi » 19. August 2008 14:53

Hallo glitzi85

Besten Dank für Deine Info!
Jetzt ist die Sache klar, merci bien.
Klausi
 
Posts: 18
Joined: 23. July 2008 15:36


Return to Apache

Who is online

Users browsing this forum: No registered users and 296 guests