Wir haben eine Website mit der folgenden Dateistruktur:.htaccess RewriteRule nicht funktioniert, <name> .php statt index.php Seite geladen = <name>
/www
/nl
index.php
contact.php
...
/fr
index.php
contact.php
...
/de
index.php
contact.php
...
index.php
.htaccess
Die index.php
Datei im Ordner www
ist eine Sprache Auswahlseite, die auf die index.php
Dateien in den Ordnern nl
, fr
und de
verweist. Die letzteren index.php-Seiten erstellen die Webseite und laden den Seiteninhalt von <page>.php
. Dies würde laden den Inhalt /nl/contact.php
in die Websites Struktur
http://www.ourdomain.com/nl/index.php?page=contact
:
In der Vergangenheit wurden die Seiten wie diese geladen.
Um die Website mehr SEO freundlicher zu machen, änderten wir dies:
http://www.ourdomain.com/nl/contact
Diese tief gehen kann (/nl/nav-level1/nav-level2/nav-level3
)
Die index.php Dateien im nl
, fr
auf 3 Ebenen und de
Ordner, haben einen Algorithmus, der 301 die alte URL der Seite auf die neue URL der Seite leitet, für Leute, die die Website von den alten URLs besuchen.
header('HTTP/1.1 301 Moved Permanently');
header('location:' . $newurl);
exit;
Die .htaccess-Datei im Verzeichnis root www sieht wie folgt aus:
RewriteEngine On
# RewriteBase wijzigen in/(online)
RewriteBase/
# PDF: redirect pdf file in wrong directory to root language directory (nl/fr/en)
RewriteRule ^(nl|fr|de)(/[a-zA-Z0-9\-/]+)+/([a-zA-Z0-9\-]+.pdf)/?$ $1/$3 [NC,L,R=301]
# pages: redirect index.php in wrong directory to the correct language directory (nl/fr/en)
RewriteRule ^(nl|fr|de)(/[a-zA-Z0-9\-/]+)+/(index.php)/?$ $1/$3 [NC,L]
# pages: convert SEO friendly url to index.php?page=<page>
RewriteRule ^(nl|fr|de)(/[a-zA-Z0-9\-/]+)*/([a-zA-Z0-9\-]+)/?$ $1/index.php?page=$3 [NC,L]
Das funktionierte gut, bis ich diese Seite mit den Servern von unserem neuen Hosting-Provider bewegt.
Jetzt, wenn ich zu http://www.ourdomain.com/nl/contact
gehe, wird http://www.ourdomain.com/nl/index.php?page=contact
geladen, http://www.ourdomain.com/nl/contact.php
wird direkt geladen. Das bedeutet, dass ich den Inhalt der Seite sehen kann, aber ohne die andere Struktur und das Layout unserer Website.
ich, ob die .htaccess
Datei Werke geprüft, von
- auf http://htaccess.mwl.be/ meine .htaccess-Inhalte in der .htaccess-Tester setzen und Testen der Urls meiner Website: dies ergab die erwarteten Urls
- etwas in die .htaccess-Datei ungültig setzen: Dies gibt einen Serverfehler zurück, wie erwartet
- umleiten alles auf eine Testseite: Dies leitet alle URLs zur Testdatei um.
entdeckte ich dann, dass ich durch das Erstellen von Ordnern in den Sprachordner (nl
, fr
, de
) mit den gleichen Namen wie die PHP-Dateien, um das Problem funktionieren könnte. Dadurch haben die SEO-freundlichen URLs die Seite wie erwartet geladen, aber irgendwie werden die Get-Variablen immer noch zu den SEO-freundlichen URLs hinzugefügt.
/www
/nl
/contact
/...
index.php
contact.php
...
/fr
/contact
/...
index.php
contact.php
...
/de
/contact
/...
index.php
contact.php
...
index.php
.htaccess
Statt http://www.ourdomain.com/nl/contact
ich immer http://www.ourdomain.com/nl/contact/?page=contact
weitergeleitet Wenn ich http://www.ourdomain.com/nl/contact/
gehen Die Variablen erhalten werden an die URL hinzugefügt.
Ich habe stundenlang an diesem Problem gearbeitet und gesucht und ich verstehe es nicht. Jeder wertvolle Beitrag wäre willkommen.
haben Sie 'AllowOverride FileInfo Options' eingestellt? – Ben