Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Mod_rewrite (https://www.delphipraxis.net/98247-mod_rewrite.html)

Andreas L. 23. Aug 2007 20:48


Mod_rewrite
 
Hi,
ich möchte erreichen, dass eine URL ala http://example.com/de/about an http://example.com/index.php?language=de&page=about weitergeleitet wird. Bisher habe ich folgendes:

Code:
RewriteEngine On
Options +FollowSymlinks
RewriteBase /

RewriteRule ^([^/.]+)/?$ index.php?page=$1 [L]
Das ermöglicht aber nur, dass ein Parameter übergeben wird. Wie könnte ich nun das Obengenannte (Firefox Schlechtschreibprüfung...) erreichen?

Matze 23. Aug 2007 20:56

Re: Mod_rewrite
 
Hi,

versuche es mal so (ungetestet):

Code:
RewriteRule ^([a-z]+)/([a-z_]+)$ index.php?language=$1&page=$2

Andreas L. 23. Aug 2007 20:59

Re: Mod_rewrite
 
Wenn ich http://example.com/de/about aufrufe gehts. Jetzt soll aber hinten noch ein Slash dran...

Matze 23. Aug 2007 21:00

Re: Mod_rewrite
 
Dann schreibe doch einen hin. ;)

Code:
RewriteRule ^([a-z]+)/([a-z_]+)/$ index.php?language=$1&page=$2

Andreas L. 23. Aug 2007 21:02

Re: Mod_rewrite
 
Danke, klappt :thumb:

Andreas L. 23. Aug 2007 21:56

Re: Mod_rewrite
 
Angenommen es wird die Domain ohne Verzeichnisse aufgerufen (http://example.com). Wie kann ich dann automatisch auf http://example.com/de/ weiterleiten?

Olli 23. Aug 2007 23:05

Re: Mod_rewrite
 
Willst du immer auf /de/ oder abhängig von der Browsersprache?

Andreas L. 23. Aug 2007 23:07

Re: Mod_rewrite
 
Zitat:

Zitat von Olli
Willst du immer auf /de/ oder abhängig von der Browsersprache?

Das wäre natürlich noch besser, wenns geht.

Olli 23. Aug 2007 23:18

Re: Mod_rewrite
 
Gut, dann gibt es zwei Varianten.

1. Du versuchst es mit mod_rewrite anhand der Umgebungsvariablen rauszufinden, oder
2. http://httpd.apache.org/docs/2.0/con...gotiation.html

Bei meiner Webseite sieht das bspw. so aus:

Code:
URI: index; vary="type,language"

URI: /bin/content.cgi/en/welcome
Content-type: text/html; qs=1.0
Content-language: en

URI: /bin/content.cgi/de/welcome
Content-type: text/html; qs=0.8
Content-language: de
Pfade anpassen und es sollte funktionieren. Achtung, dabei wird nicht die Adresse in der Adreßleiste des Browsers aktualisiert, sondern nur der Inhalt. Die Links wären dann natürlich auf der /de/-Seite vermutlich auch zu deutschen Inhalten, so gesehen sollte das kein Problem darstellen.

Andreas L. 23. Aug 2007 23:21

Re: Mod_rewrite
 
für was steht das qs=1.0 bzw. qs=0.8

Und wie würde der Code aussehen wenn ich nur auf /de/ weiterleiten will.

Olli 23. Aug 2007 23:33

Re: Mod_rewrite
 
Zitat:

Zitat von Andreas L.
für was steht das qs=1.0 bzw. qs=0.8

Und wie würde der Code aussehen wenn ich nur auf /de/ weiterleiten will.

qs ist die Priorität. Wenn also mehrere Sprachen vom Browser angefordert werden, bekommt die eine Priorität vor der anderen (höherer Wert).

Bei Weiterleitung welche immer erfolgen soll, würde ich eine mod_rewrite-Regel benutzen (ungetestet):

Code:
RewriteCond !^/de/?$
... und dann weiterleiten, sonst raus.

Würdest du es nicht machen, würde ja eben eine Rekursion entstehen.

Mir fällt gerade auf, es könnte auch so lauten, bin nicht sicher wegen dem Slash am Anfang:
Code:
RewriteCond !^de/?$


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz