1.3k Aufrufe
Gefragt in Webseiten HTML von
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

4 Antworten

0 Punkte
Beantwortet von
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.
0 Punkte
Beantwortet von
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
0 Punkte
Beantwortet von
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
0 Punkte
Beantwortet von
Hallo Maggi69,
danke für den Tipp. du bist einfach ein Held!

Gruß

yoyo1987
...