mod_rewrite-Rules klappen nur auf lokaler Homepage, nicht auf Online-Subdomain
Hallo mod_rewrite-Gemeinde,
Ich hab ein Problem mit meinen neudefinierten mod_rewrite-Rules:
--------------
1. LOKAL:
--------------
Auf meiner lokalen Homepage, die unter UniformServer unter Windows läuft, funktionieren die neuen mod_rewrite-Rules, die ich in der .htaccess-Datei abgelegt habe:
Die komplette url im Browser lautet dort dann http://localhost/schmetterlinge-bayern-bw/..
also z.B. http://localhost/schmetterlinge-bayern-bw/portrait-Triodia+sylvina+Ampfer-Wurzelbohrer.html und wird intern erfolgreich umgewandelt in
http://localhost/schmetterlinge-bayern-bw/arten-portraits.php?view=Triodia/sylvina/Ampfer-Wurzelbohrer
-----------------------------------------
RewriteEngine On
#
#von: portrait-Triodia+sylvina+Ampfer-Wurzelbohrer.html
#nach: arten-portraits.php?view=Triodia/sylvina/Ampfer-Wurzelbohrer
#Achtung: RewriteRule mit itsme-parm vor der allgemeineren RewriteRule ohne itsme definieren !
RewriteRule ^portrait-(.*)\+(.*)\+(.*)\.html&itsme=true$ arten-portraits.php?view=$1/$2/$3&itsme=true [L]
RewriteRule ^portrait-(.*)\+(.*)\+(.*)\.html$ arten-portraits.php?view=$1/$2/$3 [L]
#
#von: galerie-00063+Triodia+sylvina+Ampfer-Wurzelbohrer+S_01.html
#nach: art-galerie.php?view=00063/Triodia/sylvina/Ampfer-Wurzelbohrer/S_01
#Achtung: RewriteRule mit itsme-parm vor der allgemeineren RewriteRule ohne itsme definieren !
RewriteRule ^galerie-(.*)\+(.*)\+(.*)\+(.*)\+(.*)\.html&itsme=true$ art-galerie.php?view=$1/$2/$3/$4/$5&itsme=true [L]
RewriteRule ^galerie-(.*)\+(.*)\+(.*)\+(.*)\+(.*)\.html$ art-galerie.php?view=$1/$2/$3/$4/$5 [L]
-----------------------------------------
---------------
2. ONLINE:
---------------
Auf meiner Online-Test-Subdomain , die bei 1und1 (Homepage Perfect) unter Unix läuft, funktionieren diese mod_rewrite-Rules leider nicht, es kommt die HTML-Fehlermeldung „Error 404 - Not found - Die angegebene Seite konnte nicht gefunden werden.“.
Die komplette url im Browser lautet dort dann http://www.test.schmetterlinge-bayern-bw.de/..
-> also z.B. http://www.test.schmetterlinge-bayern-bw.de/portrait-Triodia+sylvina+Ampfer-Wurzelbohrer.html
Die Test-Subdomain liegt physikalisch auf dem Webspace-Pfad /Test
Die .htaccess-Datei liegt im Verzeichnis /Test und hat folgenden Inhalt:
------------------------------------------------------
AddType x-mapp-php5 .php
AddHandler x-mapp-php5 .php
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.
RewriteCond %{HTTP_HOST} !^$ [NC]
RewriteRule ^(.*) http://www.%{HTTP_HOST}/$1 [R=301,L]
#Dummy-Rules für Tests
#RewriteRule ^arten-portraits.php$ arten-liste.php [L]
#RewriteRule ^arten-portraits/(.*).html$ arten-liste.php [L]
#
#von: portrait-Triodia+sylvina+Ampfer-Wurzelbohrer.html
#nach: arten-portraits.php?view=Triodia/sylvina/Ampfer-Wurzelbohrer
#Achtung: RewriteRule mit itsme-parm vor der allgemeineren RewriteRule ohne itsme definieren !
RewriteRule ^portrait-(.*)\+(.*)\+(.*)\.html&itsme=true$ arten-portraits.php?view=$1/$2/$3&itsme=true [L]
RewriteRule ^portrait-(.*)\+(.*)\+(.*)\.html$ arten-portraits.php?view=$1/$2/$3 [L]
#
#von: galerie-00063+Triodia+sylvina+Ampfer-Wurzelbohrer+S_01.html
#nach: art-galerie.php?view=00063/Triodia/sylvina/Ampfer-Wurzelbohrer/S_01
#Achtung: RewriteRule mit itsme-parm vor der allgemeineren RewriteRule ohne itsme definieren !
RewriteRule ^galerie-(.*)\+(.*)\+(.*)\+(.*)\+(.*)\.html&itsme=true$ art-galerie.php?view=$1/$2/$3/$4/$5&itsme=true [L]
RewriteRule ^galerie-(.*)\+(.*)\+(.*)\+(.*)\+(.*)\.html$ art-galerie.php?view=$1/$2/$3/$4/$5 [L]
------------------------------------------------------
Ich hatte aus Testgründen auch mal die einfache Rule
RewriteRule ^arten-portraits.php$ arten-liste.php [L]
Aktiviert
, diese bringt aber denselben Fehler.
Ich habe natürlich auch noch eine Online-Prod-Haupdomain (www.schmetterlinge-bayern-bw.de), auf der ich der Ganze dann später auch noch funktionieren soll.
Die Proddomain liegt physikalisch auf dem Webspace-Pfad /Prod
->Frage ist nun also, brauche ich für meine lokale Webseite, für die Prod-Domain und die Test-Subdomain hier jeweils unterschiedliche Rewrite-Rule-Versionen und wenn ja welche ?
Ich hoffe hier kann mir jemand helfen.
Würde mich sehr über Eure Unterstützung freuen !!
Gruß
Mark
Antwort schreiben
Antwort 1 von gast44 vom 14.05.2022, 17:10 Options
Ist auf dem 1und1-Server Rewrite überhaupt aktiviert? Oftmals ist Billig-Webspace bzgl. Rewriting eingeschränkt, das erzeugt dann aufgrund der htaccess u.a. die genannten Error-Codes.
Antwort 2 von Maggi69 vom 14.05.2022, 17:32 Options
Hallo gast44,
Der u.g. Standard-Rewrite-Teil , um aus einer www-losen url eine www-url zumachen funzt ja, also klappt modrewrite schon grundsätzlich.
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.
RewriteCond %{HTTP_HOST} !^$ [NC]
RewriteRule ^(.*) http://www.%{HTTP_HOST}/$1 [R=301,L]
Gruß
Mark
Antwort 3 von maggi69 vom 20.05.2022, 13:13 Options
Problem ist nun gelöst:
Auch wenn ich hier im Forum leider keine weiterhelfende Antwort erhalten habe, will ich Euch die eimfache Lösung nicht vorenthalten:
1.) In der Standard-RewriteRule am Anfang der .htaccess-Datei muß NC statt L stehen, sonst werden die folgenden Rules nicht mehr ausgewertet.
2.) Beim 1und1-Apache-Server muß im Ziel-Ausdruck ein führender Slash "/" vorhanden sein (zumindest ist er standard,äßig so konfiguriert).
-> Bei meinem lokalen Uniform-Apacheserver ist dies andersrum, hier muß der führende Slash fehlen:
lokal:
RewriteRule ^arten-portraits.php$ arten-liste.php [L]
1und1:
RewriteRule ^arten-portraits.php$ /arten-liste.php [L]
Gruß
Mark
Antwort 4 von yoyo1987 vom 21.05.2022, 15:35 Options
Hallo Maggi69,
danke für den Tipp. du bist einfach ein Held!
Gruß
yoyo1987