Rewrite funktioniert nur teilweise

Alles, was den Apache betrifft, kann hier besprochen werden.

Rewrite funktioniert nur teilweise

Postby sapientior » 10. November 2012 12:10

Hallo, ich habe einen Server am Laufen und nutze dynDNS. Da diese Domains immer nicht so gut zu merken sind (für andere Leute), habe ich diverse dot.tk-Domains. Diese werden per A-Name-Record an die IP mit der .htaccess-Datei weitergeleitet.
Dies ist der Rewrite-Teil in der .htaccess (etwas abgeändert):
Code: Select all
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain1.tk$ [NC]
RewriteRule ^(.*) http://domainA.dyndns.info/folder1 [R=301,L]
RewriteCond %{HTTP_HOST} ^domain2.tk$ [OR]
RewriteCond %{HTTP_HOST} ^domain3.tk$ [OR]
RewriteCond %{HTTP_HOST} ^domain4.tk$
RewriteRule ^(.*) http://domainB.dyndns.info/folder2 [R=301,L]
RewriteCond %{HTTP_HOST} ^maindomain.tk$ [OR]
RewriteCond %{HTTP_HOST} ^11.22.33.44$
RewriteRule ^(.*)$ http://maindomain.dyndns.info/$1 [R=301,L]

Ich weiß, die Punkte müsste man mit \. machen, aber das sollte hier in dem Beispiel egal sein.

Die ersten zwei RewriteRules funktionieren super.
Bei der letzten funktioniert es auch super, solange ich nur die Stammseite aufrufe (z.B.: maindomain.tk). Da werde ich dahin umgeleitet. Wenn ich aber auf einen Unterordner zugreifen möchte (z.B.: maindomain.tk/folder3/ ) dann wird nicht umgeschrieben. es bleibt dann das maindomain.tk/folder3/ stehen. Dies soll jedoch an maindomain.dyndns.info/folder3/ geschickt werden.
Ich habe nun alle möglichen Sachen probiert... anfangs funktionierte es, als ich nur eine einzige Regel hatte (auch mit beiden Conds) ... aber aufeinmal ging es nicht mehr, obwohl ich nix am Code geändert hab.
Meine Frage: Wie müssen nun die letzten 3 Zeilen aussehen, damit der Host umgeschrieben wird und der Unterordner mit erhalten bleibt?
sapientior
 
Posts: 6
Joined: 10. November 2012 11:55
Operating System: Win XP / Win Server 2003

Re: Rewrite funktioniert nur teilweise

Postby Nobbie » 10. November 2012 14:07

Was ist denn an DynDNS Domains "schlechter zu merken" als an Dot.tk Domains? Das ist doch dasselbe in Grün.

Zur Technik: was ist denn dieser Rechner für einer, der mit fester IP angesprungen wird?
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Re: Rewrite funktioniert nur teilweise

Postby sapientior » 10. November 2012 15:04

Der Server selbst hat eine feste IP und im root-Verzeichnis liegt die .htaccess.
Was genau meinst du mit "was ist denn dieser Rechner für einer"? Was genau möchtest du wissen?
An sich brauch ich nur die Syntax zum umschreiben des Hosts und dabei trotzdem die unterordner mitzugeben.
sapientior
 
Posts: 6
Joined: 10. November 2012 11:55
Operating System: Win XP / Win Server 2003

Re: Rewrite funktioniert nur teilweise

Postby Nobbie » 11. November 2012 15:45

sapientior wrote:Der Server selbst hat eine feste IP und im root-Verzeichnis liegt die .htaccess.


Welcher "der Server selbst"?

Du benutzt DynDNS, das benutzt man immer dann, wenn ein Rechner (meistens zu Hause) KEINE feste IP hat. Deswegen gehe ich davon aus, dass Du auch so einen Rechner betreibst.

Dann schreibst Du, irgendwie (es ist nicht erkennbar, an welcher Stelle das geschieht) würde über einen A-Record die Domainnamen *.tk auf einen Rechner mit fester IP geleitet. Was für ein Rechner ist das?

Wievlele Rechner sind an dem Scenario beteiligt und wozu benutzt Du DynDNS? Das ist leider aus der sehr knappen Beschreibung nicht erkennbar.
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Re: Rewrite funktioniert nur teilweise

Postby sapientior » 11. November 2012 15:59

Kannst du bitte beim Thema bleiben?
Ich habe meine Gründe für das dynDNS und .tk .... auch "obwohl" der Server eine feste IP hat (auf dem die .htaccess nach dem obigen Schema liegt).
Könnte der nächste Beitrag bitte etwas mit der Rewrite-Geschichte zu tun haben? Danke.
sapientior
 
Posts: 6
Joined: 10. November 2012 11:55
Operating System: Win XP / Win Server 2003

Re: Rewrite funktioniert nur teilweise

Postby Altrea » 11. November 2012 17:38

Hallo sapientior,

aus Nobbies Antwort ist doch klar erkennbar, dass für ihn (und da kann ich ihm nur zustimmen) der komplette Aufbau nicht klar erkennbar ist. Gerade beim Thema Rewrite ist es elementar wichtig, alles verstanden zu haben. Man kann keine gute, passende Antwort auf eine Frage geben, wenn man das drum herum nicht versteht. Für dich ist das alles vielleicht schön und logisch, doch wir können nur auf den Informationen aufbauen, die du uns gibst. Rückfragen sollten also erlaubt sein und sollten von dir nach bestem Wissen beantwortet werden, zumindest wenn du eine passende Antwort hier erwartest. Denn es ist keineswegs gängig eine Second Level Domain auf eine DynDNS Domain und von da auf eine IP zu routen. Der gängige Aufbau wäre Second Level Domain direkt auf IP.

Es gäbe genau zwei Alternativen, die nicht zu Rückfragen führen:
1.) Du beschreibst schon in deinem Eingangsthread alles so genau wie möglich, dass keine Fragen offen bleiben
2.) Du schließt Antworten von Allen, denen deine Informationen nicht ausreichen, aus (was bedeutet, dass du auch das Risiko eingehst, dass dir niemand erst antwortet)

mit freundlichen Grüßen,
Altrea
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11926
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 11 Pro x64

Re: Rewrite funktioniert nur teilweise

Postby sapientior » 12. November 2012 00:33

Tut mir Leid, ich dachte, einfach nur, dass es einen Fehler gibt in meinem Code. Daher denke ich nicht, dass es etwas mit den Domains zu tun hat.
Hier jedenfalls eine möglichst genaue beschreibung der "Technik":
Der Server ist ein IBM xServer 346 unter anderem mit WinServer 2003 R2 x64. Darauf läuft das XAMPP 1.7.7. Dieser Server besitzt eine statische IP (vom DFN vergeben).
Das DynDNS habe ich eingerichtet, da ich zu Debug-, Update- und Wartungszwecken die dynamische IP meines Laptops mit den DynDNS-Adressen aktualisiere um eben Änderungen testen zu können, bevor ich sie auf den Server überspiele.
Die dot.tk Domains habe ich zum Kürzen der DynDNS Domains. Ich nutze Dabei nicht das Domain-forwarding, da dies zur Folge hat, dass immer dasselbe in der Adressleiste steht und man so keine Links zu Unterseiten geben kann und beim Aktualisieren immer die Startseite aufgerufen wird. Deswegen nutze ich die Dot TK DNS Services mit A Record.
Dabei sehen die Einstellungen folgendermaßen aus:
Code: Select all
Type      |   Host Name      |  IP Address
--------------------------------------------
A Record  |  example.tk      |  11.22.33.44
A Record  |  www.example.tk  |  11.22.33.44

Nun möchte ich, dass entsprechend meines ersten Posts die Weiterleitungen erfolgen:
  1. Beim Zugriff auf "domain1.tk" soll eine Umschreibung des Hosts auf "domainA.dyndns.info/folder1" erfolgen (was auch problemlos funktioniert)
  2. Beim Zugriff auf "domain2.tk", "domain3.tk" oder "domain4.tk" soll eine Umschreibung des Hosts auf "domainB.dyndns.info/folder2" erfolgen (was auch problemlos funktioniert)
  3. Beim Zugriff auf meine 'Wartungsdomain' oder direkt auf die statische IP des Servers soll eine Umschreibung des Hosts auf "maindomain.dyndns.info" erfolgen und dabei auch der weitere Pfad mitgegeben werden (also: 11.22.33.44/folderX/dataY.end soll auf http://maindomain.dyndns.info/folderX/dataY.end geändert werden)... nur das funktioniert leider nur bedingt (Beim Aufrufen der IP oder maindomain.tk, so erfolg die Umschreibung auf maindomain.dyndns.info, jedoch nicht, wenn weiter Pfade daran hängen. Dann bleibt die IP oder das maindomain.tk einfach stehen)

Der Fehler muss also hierin liegen:
Code: Select all
RewriteCond %{HTTP_HOST} ^maindomain.tk$ [OR]
RewriteCond %{HTTP_HOST} ^11.22.33.44$
RewriteRule ^(.*)$ http://maindomain.dyndns.info/$1 [R=301,L]

Ich würde gern wissen, wo.
sapientior
 
Posts: 6
Joined: 10. November 2012 11:55
Operating System: Win XP / Win Server 2003

Re: Rewrite funktioniert nur teilweise

Postby Nobbie » 12. November 2012 12:51

Ganz verstanden habe ich es immer noch nicht, aber ich habe immer noch ergänzende Fragen:

a) diese IP 11.22.33.44 ist die IP des Windows 2003 Servers? D.h. also domain.tk verweist auf diese IP, dieser Server leitet via .htaccess auf deinen Laptop (mittels Rewrites) um. Es sind also ZWEI Rechner involviert?

b) entsprechen die verschiedenen domainXX.tk auch verschiedenen Laptops, oder sind diese Domains genau genommen VirtualHosts unter einem einzigen Apache?

c) was verstehst Du unter "Domain-Forwarding", nach meiner Kenntnis ist es doch genau das, was Du gerade versuchst? Siehe auch http://de.wikipedia.org/wiki/Domainweiterleitung

d) warum ist das so umständlich mit Rewrite gelöst? Wenn Du beispielsweise für jede domainXX.tk einen VirtualHost auf dem Server einrichtest, kannst Du dort jeweils einen ganz simplen Redirect auf dyndnsXXX.bla konfigurieren (das ist erheblich weniger fehlerträchtig und auch einfacher zu warten). Beispiel:

Code: Select all
NameVirtualHost 11.22.33.44

<VirtualHost 11.22.33.44>
ServerName domain1.tk
ServerAlias domain2.tk, domain3.tk
Redirect / http://domainB.dyndns.info/folder2/
<VirtualHost>

<VirtualHost 11.22.33.44>
ServerName maindomain.tk
ServerAlias 11.22.33.44
Redirect /  http://maindomain.dyndns.info/
</VirtualHost>


e) wenn Du es dennoch mit Rewrite lösen willst: was steht im Acceslog des Servers, insbesondere wenn die Weiterleitung "schief geht"? Und was steht entsprechend im AccesLog des Laptops?

Tut mir Leid, ich dachte, einfach nur, dass es einen Fehler gibt in meinem Code. Daher denke ich nicht, dass es etwas mit den Domains zu tun hat.


Das ist das nächste Problem, wir debuggen hier "Pseudocode" und nicht das, was da wirklich steht. Eigentlich habe ich mal geschworen, das nie mehr zu machen, denn in 99% aller Fälle liegt der Fehler auch genau dort, aber weil nicht der Originalcode gezeigt wird, sondern ein Pseudocode, ist beim Umsetzen genau die wichtige Fehlerstelle nicht mehr zu sehen. Das macht es ganz besonders schwer und oft auch ärgerlich, weil man eben mit Code arbeitet, der überhaupt nicht eingesetzt wird. Manchmal sind es Schreibfehler (1 statt l oder 0 statt O), manchmal fehlt ein Punkt, oder ein Slash oder manchmal sind Domainnamen Teilmengen von anderen Namen und und und - das alles sehen wir hier nicht.
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Re: Rewrite funktioniert nur teilweise

Postby sapientior » 12. November 2012 15:08

Ich habe soeben das Problem durch weiteres Probieren gelöst.
Code: Select all
RewriteCond %{HTTP_HOST} !^maindomain.dyndns.info$
RewriteRule ^(.*)$ http://maindomain.dyndns.info/$1 [R=301,L]

Mit den speziellen Regeln davor funktioniert es nun wie gewünscht.
Wenn eine vorherige Regel greift, wird diese ja nicht angewendet und wenn keien grefit, wird sie angewendet. Dabei wird lediglich der Host umgeschrieben und das Anhängsel von Unterordnern und Dateien beibehalten.

An sich ist es ein Domain-Forwarding. Mit dot.tk wird es jedoch nicht ordentlich, da diese im Prinzip ein Framework nutzen, das nur aus einem großen Fram über die ganze Seite besteht. Das hat zur Folge, dass in der Adressleiste immer dasselbe stehen bleibt, auch wenn man auf Links in der Seite klickt. Beim aktualisieren der Seite wird somit immer die Startseite aufgerfufen, was unschön ist.
sapientior
 
Posts: 6
Joined: 10. November 2012 11:55
Operating System: Win XP / Win Server 2003

Re: Rewrite funktioniert nur teilweise

Postby sapientior » 12. November 2012 15:37

Image
Nach diesem Schema läuft die ganze Sache ab. Wenn nun jemand "domain.tk/irgendwas" im Browser eingibt, dann wird bei Dot.tk über den A Record die statisce IP des Servers aufgerufen. Auf dem wird dadurch in der .htacces gesucht, welche RewriteRule greifen soll. Diese führt nun immer zu einer dynDNS-Domain. Also wird bei dynDNS die IP abgefragt, die derzeit für die Domain gespeichert ist. Das kann entweder die feste IP des Servers sein oder in Wartungsfällen die beliebige IP meines Laptops. Am Ende steht in der Adresszeile "domain.dyndns.info/irgendwas".
Somit ändert sich für den Nutzer nichts und ich habe keine Scherereien, wenn ich am Laufenden Server arbeite, da zu dieser Zeit die Seite über meinen Laptop läuft.
sapientior
 
Posts: 6
Joined: 10. November 2012 11:55
Operating System: Win XP / Win Server 2003

Re: Rewrite funktioniert nur teilweise

Postby Nobbie » 12. November 2012 18:44

sapientior wrote:Ich habe soeben das Problem durch weiteres Probieren gelöst.
Code: Select all
RewriteCond %{HTTP_HOST} !^maindomain.dyndns.info$
RewriteRule ^(.*)$ http://maindomain.dyndns.info/$1 [R=301,L]


Wie erwartet sehen wir nun weder Ursache noch Lösung, weil dieser Code nicht zum Einsatz gelangt und auch der fehlerhafte Code uns nicht bekannt ist. Ich werde mich wieder an meine eigenen Regeln halten und helfe nur noch bei Originalcode.
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04


Return to Apache

Who is online

Users browsing this forum: No registered users and 10 guests

cron