301 Weiterleitung per htaccess

Hallo Community,

ich benötige eure Hilfe. Ich möchte ein komplettes altes Projekt per htaccess auf ein neues Projekt umleiten. Jedoch sollen beim alten Projekt 3 Seiten nicht mit weitergeleitet werden -> also von der Umleitung ausgeschlossen werden. Ich habe von so etwas gar keine Ahnung! Ich erhielt schon mal vor längerer Zeit diesen Code:

Apache KonfigurationRewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.domain-alt\.de$
RewriteCond %{HTTP_HOST} !^www\.domain-alt\.de\/test\.html$
RewriteCond %{HTTP_HOST} !^www\.domain-alt\.de\/test2\.html$
RewriteCond %{HTTP_HOST} !^www\.domain-alt\.de\/test3\.html$
RewriteRule ^(.*)$ http://www.domain-neu.de/$1 [L,R=301]

Und habe diesen nun so modifiziert:

Apache KonfigurationRewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.gruene-gurken\.de$
RewriteCond %{HTTP_HOST} !^www\.gruene-gurken\.de\/afrika\.html$
RewriteCond %{HTTP_HOST} !^www\.gruene-gurken\.de\/europa\.html$
RewriteCond %{HTTP_HOST} !^www\.gruene-gurken\.de\/asien\.html$
RewriteRule ^(.*)$ http://www.rote-aepfel.com/$1 [L,R=301]

Jedoch funktioniert das so nicht. Wie geschrieben, hab ich von so etwas keinen Plan. Kann mir bitte jemand helfen? Vielleicht ist es ganz einfach?

DANKE & Viele Grüsse
Difi
 
Wenn ich es richtig sehe, hast du 2 kleine Fehler.
1. du darfst / nicht maskieren
2. deine alten Seiten greifen nicht auf HTTP_HOST, sondern auf REQUEST_URI

Mit folgender Korrektur sollte es funktionieren.
RewriteCond %{HTTP_HOST} ^www\.gruene-gurken\.de$
RewriteCond %{REQUEST_URI} !/afrika\.html
RewriteCond %{REQUEST_URI} !/europa\.html
RewriteCond %{REQUEST_URI} !/asien\.html
RewriteRule ^(.*)$ http://www.rote-aepfel.com/$1 [L,R=301]
 
Ist ja auch logisch, denn so ist die eigentliche Rewrite-Regel nunmal aufgebaut.
Wenn du das nicht willst, dann mach aus
Code:
RewriteRule ^(.*)$ http://www.rote-aepfel.com/$1 [L,R=301]
folgendes
Code:
RewriteRule ^(.*)$ http://www.rote-aepfel.com/ [L,R=301]

Die alte Regel besagt, dass eine Umleitung unter beibehaltung der Request-URI erfolgen soll. Die neue, dass einfach alles auf die Startseite geleitet wird.
 
Ja das funktioniert. Bei den Seiten welche ausgeschlossen werden sieht die URL im Browser so aus:
www.gruene-gurken.de/partnerlinks3.html

Auf dem Server jedoch ist diese partnerlinks3.html eine de_inc_backlinks2.tpl

Wenn ich in der htaccess:
RewriteCond %{REQUEST_URI} !/partnerlinks3\.html
eintrage, erhalte ich auch eine 404 Fehlermeldung. Mit statischen Seiten allerdings funktioniert es.

Ist das auch logisch? Ich habe wirklich keine Ahnung....

Danke
Difi
 
Wenn ich das richtig verstehe, wird die xyz.html also aus xyz.tpl erzeugt.
Dann solltest du beide in die Ausnahme hinzufügen:

Code:
RewriteCond %{REQUEST_URI} !/partnerlinks3\.html
RewriteCond %{REQUEST_URI} !/partnerlinks3\.tpl
 
Genau. Die "de_inc_backlinks3.tpl" erzeugt "links/partnerlinks3.html".
Und die "de_inc_backlinks3.tpl" liegt auf dem Server im Ordner "lang"
Wäre es dann so richtig?:

RewriteCond %{REQUEST_URI} !/links/partnerlinks3\.html
RewriteCond %{REQUEST_URI} !/lang/de_inc_backlinks3\.tpl

Weil das funktioniert nicht. Liegt es an dem Backslash nach "links" und "lang"?

Danke!!
 
Nein, an den Slashs (keine Backslashs) liegt es nicht, wenn die Ordner sonst stimmen.
Allerdings habe ich mit solch dynamisch generierten Seiten aus Templates noch nicht mit Rewrites gearbeitet und kann dir daher leider nicht mehr wirklich weiterhelfen. Einziges was mir noch einfällt, wonach man dann weitersuchen könnte: Welche Software läuft denn dort und wie ist der Webserver konfiguriert? Hast du die Möglichkeit das Logging fürs mod_rewrite zu aktivieren?
 
Ich erhielt vom Provider folgende Antwort:

Was genau mit Software meinen Sie? Das Modul mod_rewrite ist installiert und kann einfach per .htaccess Datei genutzt werden. Ein Logging findet nun nur noch im Error Log statt und das können Sie nicht einsehen.

Sie können die phplogs auslesen indem Sie eine .htaccess mit folgenden
Inhalt anlegen (am besten im Hauptverzeichnis)

php_flag log_errors on
php_value error_log "/www/htdocs/FTP-LOGIN/ORDNER/LOGDATEI.txt"

Sie müssen dann einen Ordner anlegen sowie in denen einen txt Datei, beides
geben Sie 777 und natürlich die Pfade in der .htaccess anpassen.

Sobald php Fehler erscheinen, werden diese in der Textdatei gespeichert.


Das ist mir aber jetzt auch zu krass. Ich danke dir auf alle Fälle für deine bisherige Hilfe!!
 
Nein, ich meinte das Logging explizit für mod_rewrite. Dies muss aber dann vom Hoster aktiviert werden und der wird das mit Sicherheit nicht machen.
Mit Software die läuft, meinte ich eigentlich, woher diese .tpl Dateien stammen und wie von denen die .html generiert wird. Eventuell lässt sich daraus etwas schliessen.
 
In einer Datenbank steht drin wie die tpl's in eine .html URL umgewandelt werden. Hilft dir es wenn ich dir die betreffende URL mal per PN schicke?
 
Ich könnte dann zumindest die Requests an den Server analysieren und dadurch evtl. sehen, ob etwas vergessen wurde.
 
Also der Request vom Client erfolgt direkt auf die HTML-Datei (sofern nicht noch ein Proxy oder so dazwischen hängt). Mir ist aber aufgefallen, dass sich die Seite in einem Unterordner befinden, hab ich vorher wohl überlesen. Hast du diese Unterordner in der Condition mit angegeben? Also !/unterordner/seite\.html statt !/seite\.html?
Die .tpl-Dateien müssen wohl nicht ausgenommen werden, da diese nur intern verwendet werden und nicht bei Anfragen an den Server.
 
Ja habe ich mit beachtet.
RewriteCond %{REQUEST_URI} !/links/partnerlinks3\.html
RewriteCond %{REQUEST_URI} !/lang/de_inc_backlinks3\.tpl

Die Sache ist die, den Ordner "links" gibt es nicht. Die Url wird nur so von der Datenbank generiert. Kann es daran liegen?
 
Ob es den Ordner gibt oder nicht, sollte keine Rolle spielen, da der Request ja trotzdem darauf geht und ich über einen solchen Weg alte, nicht mehr bestehende URLs auf neue Umleiten kann.
Was verstehst du unter "URL von der Datenbank generiert"? Der Request an den Webserver landet nicht direkt in der Datenbank, da ist mit Sicherheit irgendwo ein Script oder ähnliches, dass aus der Anfrage dann die eigentliche Seite zusammenbaut. Dieses Script müsste dann vermutlich auch noch in die Ausnahme hinzugefügt werden.
Deswegen auch meine Frage, welche Software für die Webseite zum Einsatz kommt. Im Quelltext laesst sich leider nichts finden.
 
Hallo lookshe,

ich habe das hier gefunden:
<a href='<?php echo $GLOBALS['url']->makeURL("backlinks4");?>'>weitere Partner >>></a></div>
 
Sorry für die etwas verspätete Antwort, aber ich war anderweitig beschäftigt...
Das was du dort gefunden hast, hilft nur bedingt weiter, da es den Link zu der Seite auf der Hauptseite erzeugt, aber diese Seite nicht selbst.
Aber auf jeden Fall ist jetzt sicher, dass es irgendeine PHP-Software ist. Es gibt also sicherlich irgendwo eine Datei, die beim Aufruf der xyz.html dann mit Hilfe der xyz.tpl die eigentliche Seite generiert. Und diese Datei muss auch ausgenommen werden. Aber ohne zu Wissen, welche Software es ist, wird es leider nicht einfacher...
 
Hallo lookshe,

ich habe die betreffenden Seiten nun statisch eingerichtet, das schont die Nerven und es funktioniert...
Ich danke dir nochmals das du dir für das Problem Zeit genommen hast und wünsche dir schon mal ein entspanntes Weihnachtsfest!!

Danke
 
Zurück
Oben