f-thies.de Foren-Übersicht
 Portal  •  FAQ •  Suchen •  Einstellungen  • Benutzergruppen  • Registrieren  • Profil  • Einloggen, um private Nachrichten zu lesen  • Login
Kalender 
Nächstes Thema anzeigen
Vorheriges Thema anzeigen

Neues Thema eröffnenNeue Antwort erstellen Vorheriges Thema anzeigenDieses Thema verschickenZeige Benutzer, die dieses Thema gesehen habenDieses Thema als Datei sichernPrintable versionEinloggen, um private Nachrichten zu lesenNächstes Thema anzeigen
Autor Nachricht
ko
Newbie
Newbie


Alter: 32
Anmeldungsdatum: 28.04.2009
Beiträge: 5

blank.gif
BeitragVerfasst: Di 28 Apr, 2009 3:04 pm  Titel:  mod_rewrite und Aufbau einer multilingualen Website Antworten mit ZitatNach untenNach oben

Hallo, kann mir jemand helfen?

Ich beziehe mich hier auf den folgenden Artikel:

http://www.f-thies.de/artikel/lesenswertes/aufbau_einer_multilingualen_website.html

Ich finde die da beschriebene Lösung mit PHP und mod_rewrite einfach und toll. Allerdings frage ich mich was man in .htaccess modifizieren sollte, um nicht nur eine php-Datei aufzurufen sondern alle php-Dateien, die die Webseite enthält. (i.e: about_us.php, services.php). Da die Regulären Ausdrücke in dem Beispiel allgemein für alle Dateien geschrieben sind, wie kann man sie in .htaccess für spezifische Dateien schreiben?

Ich habe viele Seiten gelesen, die sich mit diesem Thema beschäftigen, auch modrewrite.de aber ich finde nicht die Lösung.
Das folgende habe ich auch versucht aber es funktioniert nicht

RewriteRule ^about_us.php$ $1/ [R=301,L]
RewriteRule ^about_us.php$/about_us.html$ $2.php?lang=$1 [L]
RewriteRule ^about_us.php$ about_us.php?lang=$1 [L]

RewriteRule ^services.php$ $1/ [R=301,L]
RewriteRule ^services.php$/services.html$ $2.php?lang=$1 [L]
RewriteRule ^services.php$ services.php?lang=$1 [L]

und ich frage mich auch ob man vielleicht die Bedingungen nicht modifizieren sollte.

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !/$

Ich hoffe meine Frage ist verständlich und jemand kann mir helfen.


Vielen Dank im voraus.

KO


Steinbock  Ziege VerstecktPersönliche Galerie von koBenutzer-Profile anzeigenPrivate Nachricht senden
Google







Verfasst:   Titel: Sponsored Link Nach untenNach oben



  
Thies
Webmaster
Webmaster


Alter: 43
Anmeldungsdatum: 04.08.2003
Beiträge: 1423
Wohnort: Thüringen
blank.gif
BeitragVerfasst: Mi 29 Apr, 2009 8:52 am  Titel:  Re: mod_rewrite und Aufbau einer multilingualen Website Antworten mit ZitatNach untenNach oben

Moin KO

ko hat folgendes geschrieben:
Hallo, kann mir jemand helfen?

Ich versuche mein bestes!

ko hat folgendes geschrieben:
Ich finde die da beschriebene Lösung mit PHP und mod_rewrite einfach und toll.

Danke, das freut mich natürlich

ko hat folgendes geschrieben:
Allerdings frage ich mich was man in .htaccess modifizieren sollte, um nicht nur eine php-Datei aufzurufen sondern alle php-Dateien, die die Webseite enthält.

Nein, denn das ist mit der Lösung ja bereits erfolgt (oder ich verstehe Deine Frage falsch)

Code:
RewriteRule ^(.*)/(.*)\.html$ $2.php?lang=$1 [L]

Durch die beiden Platzhalte (.*) werden alle Aufrufe entsprechend umgewandelt, also:

englisch/about_us.html wird zu about_us.php?lang=englisch
deutsch/about_us.html wird zu about_us.php?lang=deutsch
englisch/service.html wird zu service.php?lang=englisch

Code:
RewriteRule ^(.*)/$ index.php?lang=$1 [L]

Dieser Part ist dann jeweils nur für die Startseite

englisch/ wird zu /index.php?lang=englisch
/ ruft einfach die index.php auf

Somit musst Du m.E. gar keine Änderungen vornehmen.

Deine mod_rewrite-Regeln sind übrigens von der Syntax her total falsch, daher können die nicht greifen. z.B.

Code:
RewriteRule ^about_us.php$ $1/ [R=301,L]

bedeutet: wenn about_us.php aufgerufen wird, lade die Datei mit dem Inhalt der Variablen $1 - es wurde aber gar keine Variable $1 übergeben.

ko hat folgendes geschrieben:
und ich frage mich auch ob man vielleicht die Bedingungen nicht modifizieren sollte.

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !/$

Warum, diese Zeilen plus die danach kommende werden benötigt, um ein Problem bei Links ohne abschliessenden Slash zu beheben. Das gilt ja auch weiterhin so.

Wenn es bei Dir nicht funktioniert, dann müsstes Du mir einen Link und Deine .htaccess oder alle Dateien in einer ZIP-Datei zukommen lassen, damit ich nach dem möglichen Fehler schauen kann.

CU

Frank-Andre

_________________
if ( $ahnung == 'keine' ) { use ( Suche ) }
if ( $antwort == 0 ) { post ( $frage ) }


Image

Schütze Geschlecht:Männlich Affe OfflinePersönliche Galerie von ThiesBenutzer-Profile anzeigenPrivate Nachricht sendenE-Mail sendenWebsite dieses Benutzers besuchen
ko
Newbie
Newbie


Alter: 32
Anmeldungsdatum: 28.04.2009
Beiträge: 5

blank.gif
BeitragVerfasst: Di 05 Mai, 2009 12:20 pm  Titel:  Multilinguale Website Antworten mit ZitatNach untenNach oben

Hallo Thies,

Vielen Dank für die Antwort. Tut mir leid, daß ich mich erst jetzt melde, es war etwas turbulent hier.

Es freut mich, daß ich gar keine Änderungen vornehmen muss. Allerdings funktionieren bei mir zusätzliche php Dateien nicht.
Irgendwas ist bei mir nicht richtig, da wenn ich eine neue Datei (index1.php) zu den Dateien in deinem Beispiel in http://www.f-thies.de/artikel/lesenswertes/aufbau_einer_multilingualen_website.html einfüge und alles ausprobiere, ändert sich die Sprache bei dieser neuen Seite nicht. Ich weiß nicht, was ich falsch mache.


Ich hatte das folgende

<?php
define('IN_TOOL', 1);
include("constants.php");
$lang = (trim($_GET['lang']) != "") ? $_GET['lang'] : LANG_STANDARD;
if (in_array($lang, $lang_array))
{
include("language/" . $lang . ".php");
$hinweis_text = $language['hinweis'];
}
else
{
include("language/" . LANG_STANDARD . ".php");
$hinweis_text = $language['sprachauswahlfehler'];
}
?>

in meinen originalen html Dateien einfügt und sie dann als php gespeichert.

Die Struktur auf dem Server ist die folgende:

/demo/multilingual2

index.php
index1.php
constants.php
.htaccess
language
english

/demo/multilingual2/language

englisch.php
deutsch.php

/demo/multilingual2/englisch

index1.php
constants.php
language

/demo/multilingual2/englisch/language
englisch.php
deutsch.php

Die .htaccess Datei ist die originale von dir.

RewriteEngine On
Options +FollowSymlinks
RewriteBase /demo/multilingual2/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1/ [R=301,L]
RewriteRule ^(.*)/(.*)\.html$ $2.php?lang=$1 [L]
RewriteRule ^(.*)/$ index.php?lang=$1 [L]

Ich freue mich auf die Antwort.

KO.


Steinbock  Ziege VerstecktPersönliche Galerie von koBenutzer-Profile anzeigenPrivate Nachricht senden
Thies
Webmaster
Webmaster


Alter: 43
Anmeldungsdatum: 04.08.2003
Beiträge: 1423
Wohnort: Thüringen
blank.gif
BeitragVerfasst: Di 05 Mai, 2009 2:11 pm  Titel:  (Kein Titel) Antworten mit ZitatNach untenNach oben

Könntest Du mir bitte mal alle Dateien samt Verzeichnisstruktur in eine ZIP-Datei packen und hier als Anhang posten? Dann kann ich es besser prüfen. Eigentlich dürfte es keine Probleme geben, Deine Dateistruktur verwirrt mich nur etwas, da könnte der Fehler liegen.

Sobald ich die ZIP habe schaue ich es mir an und melde mich. OK?

_________________
if ( $ahnung == 'keine' ) { use ( Suche ) }
if ( $antwort == 0 ) { post ( $frage ) }


Image

Schütze Geschlecht:Männlich Affe OfflinePersönliche Galerie von ThiesBenutzer-Profile anzeigenPrivate Nachricht sendenE-Mail sendenWebsite dieses Benutzers besuchen
ko
Newbie
Newbie


Alter: 32
Anmeldungsdatum: 28.04.2009
Beiträge: 5

blank.gif
BeitragVerfasst: Di 05 Mai, 2009 3:17 pm  Titel:  (Kein Titel) Antworten mit ZitatNach untenNach oben

Hallo noch mal. Das ist ja nett von dir. Ich hänge die Zip Datei, die schon die Struktur enthält wie auf dem Server.

Wie gesagt, was nicht funktioniert ist index1.php.

Tausend dank.

KO


demo.zip
 Beschreibung:

Download
 Dateiname:  demo.zip
 Dateigröße:  5.2 KB
 Heruntergeladen:  127 mal


Steinbock  Ziege VerstecktPersönliche Galerie von koBenutzer-Profile anzeigenPrivate Nachricht senden
Thies
Webmaster
Webmaster


Alter: 43
Anmeldungsdatum: 04.08.2003
Beiträge: 1423
Wohnort: Thüringen
blank.gif
BeitragVerfasst: Di 05 Mai, 2009 4:43 pm  Titel:  (Kein Titel) Antworten mit ZitatNach untenNach oben

Also, hier, was ich bisher rausgefunden habe:

1. Du darfst kein Unterverzeichnis /englisch/ anlegen
Wenn Du das machst, sucht er automatisch nach einer Datei in den Verzeichnis und nutzt nicht die mod_rewrite-Regeln!

2. Links anpassen
Du hast immer noch überall "http://www.f-thies.de" in den Links stehen, das musst Du komplett rausnehmen. Sonst verweist es auf meinen Server.

3. Meine Idee hat einen Fehler!!!
In der .htaccess muss am Ende noch folgendes ergänzt werden:

Code:
RewriteRule ^(.*)\.html$ $1.php [L]

Dann müssen aber die Zeilen

Code:
RewriteCond   %{REQUEST_FILENAME} !-f
RewriteCond   %{REQUEST_URI} !/$
RewriteRule   (.*) $1/  [R=301,L]

komplett gelöscht werden und die Links z.B. anstelle auf index1.php auf index1.html enden.

Oder die Zeile

Code:
RewriteRule ^(.*)/(.*)\.html$ $2.php?lang=$1 [L]

ändern in
Code:
RewriteRule ^(.*)/(.*)\.php$ $2.php?lang=$1 [L]

dann können die drei vorgenannten Zeilen belassen werden und alle Links müssen auf .php enden.

Letzteres dürfte die bessere Variante sein.

Verstanden?

CU

Frank-Andre

_________________
if ( $ahnung == 'keine' ) { use ( Suche ) }
if ( $antwort == 0 ) { post ( $frage ) }


Image

Schütze Geschlecht:Männlich Affe OfflinePersönliche Galerie von ThiesBenutzer-Profile anzeigenPrivate Nachricht sendenE-Mail sendenWebsite dieses Benutzers besuchen
ko
Newbie
Newbie


Alter: 32
Anmeldungsdatum: 28.04.2009
Beiträge: 5

blank.gif
BeitragVerfasst: Di 05 Mai, 2009 6:28 pm  Titel:  (Kein Titel) Antworten mit ZitatNach untenNach oben

Vielen Dank fuer die schnelle Antwort.

Zitat:
1. Du darfst kein Unterverzeichnis /englisch/ anlegen

Wenn Du das machst, sucht er automatisch nach einer Datei in den Verzeichnis und nutzt nicht die mod_rewrite-Regeln!



In den Dateien, die man hier http://www.f-thies.de/artikel/lesenswertes/aufbau_einer_multilingualen_website.html
runterladen kann, verweisen die links auf einem Unterverzeichnis englisch und franz.


<a href="http:// www.f-thies.de/demo/multilingual2/englisch/">Englisch</a> | <a href="http:// www.f-thies.de/demo/multilingual2/franz/">Französisch</a>


Deswegen hatte ich einen englisch Verzeichnis angelegt. Ich hatte auch mal gelesen, daß .htaccess wirkt auf alle Dateien, die sich in Unterverzeichnisse auch befinden.
Außerdem habe ich da ein Verzeichnis images mit den Bildern, die auf Englisch sein sollen.

Zitat:
2. Links anpassen

Du hast immer noch überall "http://www.f-thies.de" in den Links stehen, das musst Du komplett rausnehmen. Sonst verweist es auf meinen Server.



Sicher, hatte ich auch. Ich habe sie wieder geändert, um die Dateien anzuhängen.


Zitat:

dann können die drei vorgenannten Zeilen belassen werden und alle Links müssen auf .php enden.



Ich habe es ausprobiert und die folgende Variante funktioniert wunderbar. (Doch mit einem Unterverzeichnis /englisch, sonst funktionierte es nicht.)

RewriteEngine On
Options +FollowSymlinks
RewriteBase /demo/multilingual2/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1/ [R=301,L]
RewriteRule ^(.*)/(.*)\.php$ $2.php?lang=$1 [L]
RewriteRule ^(.*)/$ index.php?lang=$1 [L]

Tausend dank nochmal.

ko



Verfasst: Heute um 5:43 pm  Titel:
 (Kein Titel)

Also, hier, was ich bisher rausgefunden habe:



1. Du darfst kein Unterverzeichnis /englisch/ anlegen

Wenn Du das machst, sucht er automatisch nach einer Datei in den Verzeichnis und nutzt nicht die mod_rewrite-Regeln!



2. Links anpassen

Du hast immer noch überall "http://www.f-thies.de" in den Links stehen, das musst Du komplett rausnehmen. Sonst verweist es auf meinen Server.



3. Meine Idee hat einen Fehler!!![/quote]

Ich habe es ausprobiert und die folgende Variante funktioniert wunderbar. (Doch mit einem Unterverzeichnis /englisch, sonst funktionierte es nicht.)

RewriteEngine On
Options +FollowSymlinks
RewriteBase /demo/multilingual2/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1/ [R=301,L]
RewriteRule ^(.*)/(.*)\.php$ $2.php?lang=$1 [L]
RewriteRule ^(.*)/$ index.php?lang=$1 [L]

Tausend dank nochmal.

ko


Steinbock  Ziege VerstecktPersönliche Galerie von koBenutzer-Profile anzeigenPrivate Nachricht senden
Thies
Webmaster
Webmaster


Alter: 43
Anmeldungsdatum: 04.08.2003
Beiträge: 1423
Wohnort: Thüringen
blank.gif
BeitragVerfasst: Di 05 Mai, 2009 7:49 pm  Titel:  (Kein Titel) Antworten mit ZitatNach untenNach oben

ko hat folgendes geschrieben:
In den Dateien, die man hier http://www.f-thies.de/artikel/lesenswertes/aufbau_einer_multilingualen_website.html
runterladen kann, verweisen die links auf einem Unterverzeichnis englisch und franz. Deswegen hatte ich einen englisch Verzeichnis angelegt.

Ich habe es ausprobiert und die folgende Variante funktioniert wunderbar. (Doch mit einem Unterverzeichnis /englisch, sonst funktionierte es nicht.)

Nein, auf gar keinen Fall ein Unterverzeichnis anlegen. Denn dann geht der ganze Sinn des Modells verloren. Dann kannst Du gleich alles in manuelle Dateien packen.

Es wird nur virtuell auf ein Unterverzeichnis verlinkt und per mod_rewrite die Datei im Root-Verzeichnis aufgerufen. Wenn Du Unterverzeichnisse anlegst und dort alles doppelt ablegst, werden die dortigen Dateien aufgerufen. Wenn das ohne die Unterverzeichnisse nicht geht, gibt es irgendwo anders ein Problem.

_________________
if ( $ahnung == 'keine' ) { use ( Suche ) }
if ( $antwort == 0 ) { post ( $frage ) }


Image

Schütze Geschlecht:Männlich Affe OfflinePersönliche Galerie von ThiesBenutzer-Profile anzeigenPrivate Nachricht sendenE-Mail sendenWebsite dieses Benutzers besuchen
Thies
Webmaster
Webmaster


Alter: 43
Anmeldungsdatum: 04.08.2003
Beiträge: 1423
Wohnort: Thüringen
blank.gif
BeitragVerfasst: Di 05 Mai, 2009 8:12 pm  Titel:  (Kein Titel) Antworten mit ZitatNach untenNach oben

Fehler gefunden!!! Die Zeilen

Code:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1/ [R=301,L]

müssen komplett raus aus der .htaccess! Das kann nicht funktionieren, da es ja eine virtuelle Verlinkung ist und keine physische. Wenn Du das rausnimmst, brauchst Du auch keine Unterverzeichnisse mehr.

CU

Frank-Andre

_________________
if ( $ahnung == 'keine' ) { use ( Suche ) }
if ( $antwort == 0 ) { post ( $frage ) }


Image

Schütze Geschlecht:Männlich Affe OfflinePersönliche Galerie von ThiesBenutzer-Profile anzeigenPrivate Nachricht sendenE-Mail sendenWebsite dieses Benutzers besuchen
Thies
Webmaster
Webmaster


Alter: 43
Anmeldungsdatum: 04.08.2003
Beiträge: 1423
Wohnort: Thüringen
blank.gif
BeitragVerfasst: Mi 06 Mai, 2009 8:45 am  Titel:  (Kein Titel) Antworten mit ZitatNach untenNach oben

P.S. ich habe auf der Website die "Anleitung" überarbeitet und die Demo / ZIP-Datei aktualisiert.

_________________
if ( $ahnung == 'keine' ) { use ( Suche ) }
if ( $antwort == 0 ) { post ( $frage ) }


Image

Schütze Geschlecht:Männlich Affe OfflinePersönliche Galerie von ThiesBenutzer-Profile anzeigenPrivate Nachricht sendenE-Mail sendenWebsite dieses Benutzers besuchen
ko
Newbie
Newbie


Alter: 32
Anmeldungsdatum: 28.04.2009
Beiträge: 5

blank.gif
BeitragVerfasst: Mi 06 Mai, 2009 12:08 pm  Titel:  (Kein Titel) Antworten mit ZitatNach untenNach oben

Zitat:
Fehler gefunden!!! Die Zeilen

Zitat:
müssen komplett raus aus der .htaccess! Das kann nicht funktionieren, da es ja eine virtuelle Verlinkung ist und keine physische. Wenn Du das rausnimmst, brauchst Du auch keine Unterverzeichnisse mehr.

Stimmt. Jetzt sieht alles viel besser aus. Danke


Steinbock  Ziege VerstecktPersönliche Galerie von koBenutzer-Profile anzeigenPrivate Nachricht senden
Beiträge der letzten Zeit anzeigen:      
Neues Thema eröffnenNeue Antwort erstellen Vorheriges Thema anzeigenDieses Thema verschickenZeige Benutzer, die dieses Thema gesehen habenDieses Thema als Datei sichernPrintable versionEinloggen, um private Nachrichten zu lesenNächstes Thema anzeigen

Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen


Alle Zeiten sind GMT + 1 Stunde

Forensicherheit

2479 Angriffe abgewehrt
Powered by phpBB2 Plus, phpBB Styles and Kostenloses Forum based on phpBB © 2001/6 phpBB Group :: FI Theme :: Mods und Credits

www.jamba.at - Klingeltoene Logos Handyspiele
Sichern Sie sich jetzt alle 64 Spiele der FIFA WM 2006 für einmalig nur 49 EUR!