Der Verzweiflung nahe, wegen mod_rewrite und Multidomains, Umlaute gibt's auch
Hallo Forum,
ich habe ein Problem mit mehreren Domains und mod_rewrite in Verbindung mit Contao, welches mich echt zur Verzweiflung bringt.
Jeder Versuch mod_rewrite zu verstehen ist in den letzten Jahren bei mir komplett nach hinten losgegangen. Contao benutze ich seit knapp zwei Wochen und komme ganz gut damit klar.
Im Moment mache ich damit zwei Websites, die auf einem Webspace laufen. Bei Hetzner habe ich eine Domain mit Umlaut registriert. Als Addon-Domain dieselbe Domain noch mal ohne Umlaut. Beide zeigen auf das selbe Root-Verzeichnis, in dem Contao problemlos läuft. mod_rewrite funktioniert bei der Hetzner-Domain auch.
Außerdem habe ich unter beiden Domains je eine Subdomain "blog" angelegt, die für Contao (ist ja Multidomainfähig) beide ebenfalls auf das gleiche Verzeichnis zeigen.
Contao unterscheidet offenbar auch noch zwischen mit und ohne www-Subdomain.
In Contao sind zwei Seitenbäume aufgebaut. Der eine enthält die Hauptseite, welche von allen Domains ohne "blog" aus aufgerufen werden können soll. Der Blog muss von beiden blog-Subdomains aus erreichbar sein.
Es gibt also folgende Domains (Beispielname), die wie aufgelistet funktionieren sollen:
- http://ümlautdomain.de/ -->Hauptseite
- http://www.ümlautdomain.de/ -->Hauptseite
- http://blog.ümlautdomain.de/ -->Blog
- http://uemlautdomain.de/ -->Hauptseite
- http://www.uemlautdomain.de/ -->Hauptseite
- http://blog.uemlautdomain.de/ -->Blog
Wenn ich in Contao in der Seitenstruktur für die Hauptseite bei DNS-Einstellungen>Domainname nichts eintrage, laden alle Anfragen für die Hauptseite korrekt dort. Beim Blog ist an dieser Stelle blog.ümlautdomain.de eingetragen, was die richtigen Seiten unter dieser Adresse aufruft. Dummerweise funktioniert nun natürlich immer noch nicht, dass der Blog unter blog.uemlautdomain.de aufgerufen wird. Da kommt man auf die Hauptseite.
Das muss sich doch mit mod_rewrite korrigieren lassen, oder? Die letzten 3 Tage Experimente in der .htaccess im Root-Verzeichnis und das abarbeiten zahlloser Tutorials über mod_rewrite bringen mich bisher kein Stück weiter und ich werde nur frustrierter, weil da nichts funktioniert.
In den System-Einstellungen von Contao ist übrigens der Haken bei "URLs umschreiben" gesetzt, wie auch bei "Den auto_item-Parameter verwenden". Was macht ersteres eigentlich? Sollte das Umschreiben der URLs nicht ausschließlich über die htaccess gehen?
Ich hoffe, mir kann hier jemand helfen. Vielen Dank im Voraus.
Markus
Rewrite löst GET-Parameter nicht auf
Hallo zusammen,
darf ich mich auch grade noch an diesen Thread hängen, da ich derzeit auf einem Kundenserver ein ähnliches Problem habe.
Die URL http://www.domain.de/de/insider/mein...ction/new.html wird aufgerufen und soll intern auf http://www.domain.de/de/insider/mein...tml?action=new umgeschrieben werden, aber ich erhalte beim Aufruf immer Error 404.
Die .htaccess mit den RewriteRules sieht wie folgt aus und das Ganze läuft lustigerweise auf meiner lokalen Umgebung wunderbar. Einstellungen im Contao Backend sind gleich, auch bei der .htaccess bzw. der Serverumgebung kann ich aktuell keine Unterschiede feststellen. Hier die .htaccess:
PHP-Code:
RewriteEngine On
##
# Rewrite base
#
# Set the RewriteBase if your Contao installation is in a subdirectoy and
# the rewrite rules are not working properly. Usage examples:
#
# RewriteBase /contao-2.9.0
# RewriteBase /path/to/contao
#
# Uncomment the following line to set the RewriteBase.
##
RewriteBase /
##
# Malicious requests
#
# Contao usually does not pass absolute URLs via GET, therefore the
# following rules block all requests that try to pass a URL or the /etc/
# directory as parameter.
##
RewriteCond %{REQUEST_URI} (ftp|https?):|/etc/ [NC,OR]
RewriteCond %{QUERY_STRING} (ftp|https?):|/etc/ [NC]
RewriteRule .* - [F,L]
##
# Require www
#
# Uncomment the following lines and replace "domain.com" with your domain
# name to redirect requests without "www".
##
RewriteCond %{HTTP_HOST} ^domain.de [NC]
RewriteRule (.*) http://www.domain.de/$1 [R=301,L]
##
# Compressed .js and .css files
#
# Most of the JavaScript and CSS files used in Contao are also available
# as compressed .gz version, which requires less bandwidth and optimizes the
# page loading time. The following rules load these compressed ressources.
##
AddEncoding gzip .gz
<FilesMatch "\.js\.gz$">
AddType "text/javascript" .gz
</FilesMatch>
<FilesMatch "\.css\.gz$">
AddType "text/css" .gz
</FilesMatch>
RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{REQUEST_FILENAME} \.(js|css)$
RewriteCond %{REQUEST_FILENAME}.gz -f
RewriteRule ^(.*)$ $1.gz [QSA,L]
##
# Static ressources
#
# Do not rewrite requests for static files or folders such as style sheets,
# images, movies or text documents.
##
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
##
# Contao URLs
#
# By default, Contao adds ".html" to the generated URLs to simulate static
# HTML documents. If you change the URL suffix in the back end settings, make
# sure to change it here accordingly!
#
# RewriteRule .*\.html$ index.php [L] # URL suffix .html
# RewriteRule .* index.php [L] # No URL suffix
# RewriteRule .*\.txt$ index.php [L] # URL suffix .txt
#
# If you are using mod_cache, it is recommended to use the RewriteRule below,
# which adds the query string to the internal URL:
#
# RewriteRule (.*\.html)$ index.php/$1 [L]
#
# Note that not all environments support mod_rewrite and mod_cache!
##
RewriteRule .*\.html$ index.php [L]
Habt Ihr vielleicht eine Idee, wie ich hier wieder wie gewohnt arbeiten könnte? Es hatte nämlich beim Kunden auch bis vor einigen Wochen funktioniert, er hat sich erst dieser Tage gemeldet, dass er keinen Zugriff auf die Unterseiten habe. Und zudem hatte ich auf dem Server feststellen müssen, dass einige Dateiberechtigungen nicht mehr passen, evtl. durch Eingriff von außen oder Backup?
Herzliche Grüße,
Christian