Umleitung einer URL von einer anderen Seite?

vished

Member
Hallo,

ich habe eine grundlegende Frage (sorry, bin kein Experte auf dem Gebiet).

Ich möchte gerne folgendes realisieren.
Ich habe eine Applikation, die von verschiedenen User genutzt werden kann.
Jeder User hat bspw. seinen eigenen Webshop unter:

www.myapplication.com/webshop/user1/startpage.html

Jeder User kann nun auf diesen Webshop zugreifen. Wenn er navigiert, dann navigiert er aber durch:
www.myapplication.com/webshop/user1/

-> Sprich dem Enduser wird in der Browserzeile immer diese URL angezeigt.

Was ich nun machen möchte ist, dass der User selbst auf seiner Homepge eine Weiterleitung einrichtet, bpsw. eine Subdomain:
webshop.mycompany.com

Meine Frage ist nun, ob die Subdomain (webshop.mycompany.com) auf die Seite der Applikation so geleitet werden kann, dass
beim Navigieren nun auch nur die vordere URL steht (also die URL vom Kunden).

Sodass man nicht sieht, dass eig. die URL www.myapplication.com/webshop/user1/startpage.html genutzt wird?

Also für den Enduser soll in der Browserzeile dann das stehen:
webshop.mycompany.com/startpage.html (anstatt www.myapplication.com/webshop/user1/startpage.html)

Geht sowas über DNS?
 
Hast du Zugriff auf die Konfiguration des Webservers oder ist das gemieteter Webspace?
Falls es gemieteter Webspace ist, frage deinen Anbieter nach Lösungen.



Dafür sind virtuelle Hosts (apache2, nginx) und DNS da.

Man trägt den A-Record ein, der auf die IPv4-Adresse des Servers verweist.
Falls man auch IPv6 hat, legt man noch einen AAAA-Record an.

Dein Webbrowser fragt nach der IP-Addresse der Domain.
Dann verbindet sich dein Webbrowser mit der IP-Addresse auf Port 80 (Standard für HTTP) oder Port 443 (HTTPS).

Woher weiß nun der Webserver welche Seite er ausliefern soll?

Am einfachsten lässt sich das mit netcat zeigen:
Code:
andre@erp:~# nc 5.9.16.40 80
GET / HTTP/1.1
Host: archive.server101.icu

HTTP/1.1 301 Moved Permanently
Server: nginx/1.14.2
Date: Fri, 24 Apr 2020 09:24:07 GMT
Content-Type: text/html
Content-Length: 185
Connection: keep-alive
Location: https://archive.server101.icu/

<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.14.2</center>
</body>
</html>

Der Befehl nc (netcat) baut eine TCP-Verbindung zu meiner Adresse auf Port 80 auf.
Folgende Zeilen musste ich meinem Webserver senden, damit ich den Inhalt bekomme.
Code:
GET / HTTP/1.1
Host: archive.server101.icu

Die leere Zeile am Ende (\r\n) ist für den Webserver der Startschuss den Inhalt auszuliefern.
Wie man erkennen kann, möchte mein Webserver, dass dein Browser auf https://archive.server101.icu/ umgeleitet wird.
Implizit ist das der Port 443, mit dem sich dann dein Webbrowser verbindet. Das ist jetzt aber nicht ganz so wichtig.

Die Zuordnung der virtuellen Hosts findet in der Konfiguration des Webservers statt.

Beim Nginx sieht das dann so aus:
Code:
server {
        listen 80;
        listen [::]:80;

        server_name webshop.mycompany.com;
        root /var/www/user1/;
        index index.html;
}

Wichtig ist hier noch anzumerken, dass diese Konfiguration keine PHP-Scripts verarbeitet.
Es soll nur als Beispiel dienen. Im Netz findest du haufenweise Anleitungen, die dir aber auch nur etwas bringen, wenn du Zugriff auf die Konfiguration deines Webservers hast.
 
Hast du Zugriff auf die Konfiguration des Webservers oder ist das gemieteter Webspace?
Falls es gemieteter Webspace ist, frage deinen Anbieter nach Lösungen.

Ich denke wir sollten zunächst klären, welchen Webserver du meinst.
a) Webserver von Applikation (auf dem der Webshop tatsächlich läuft)
b) Webserver von User (der, der Weiterleitung haben möchte)

Als Betreiber der Applikation ( www.myapplication.com/webshop/user1/ ) habe ich natürlich Zugriff darauf. Aber das muss natürlich vermieden werden, dass für jeden neuen User hier eine Einstellung notwendig ist.

Der User selbst hat natürlich auch wiederum einen Webspace / Webserver (seine Unternehmenshomepage zB).
Bei all-inkl habe ich zB die Einstellung "DNS Einstellung" gesehen

Für "Shopify" habe ich zB diese Anleitung gefunden:

Wenn ich das richtig verstehe:
- Als Applikationsinhaber muss ich dem User die IP - Adresse der Applikation nennen.
- Der User bindet den DNS Eintrag wie in dem Artikel beschrieben bei sich ein

Sind hier sonstige Dinge zu tätigen?
 
Ich denke wir sollten zunächst klären, welchen Webserver du meinst.
Deinen Webserver.

Webserver von User (der, der Weiterleitung haben möchte)
Der muss nur einen Link setzen, es seiden er hat eine eigene Domain und möchte gerne, dass dein Webserver seine Subdomain bedient.
Dann braucht der Kunde die IP deines Webservers und du musst den vHost für die Subdomain des Kunden auf deinem Webserver anlegen.

Wenn ich das richtig verstehe:
- Als Applikationsinhaber muss ich dem User die IP - Adresse der Applikation nennen.
- Der User bindet den DNS Eintrag wie in dem Artikel beschrieben bei sich ein

Sind hier sonstige Dinge zu tätigen?
So wie ich es beschrieben habe, bräuchte der Kunde gar nicht die IP-Adresse von deinem Webserver, es seiden er will seine eigene Domain auf deinen Webserver umleiten. Das kann er tun, aber du musst dann trotzdem die Konfiguration ändern.

Wenn du hingegen deine eigene Domain verwendest um Subdomains für die Kunden anzulegen, braucht der Kunde nur die URL.
Wenn der Kunde seine eigene Domain verwenden möchte, müssen beide Seiten zusammen arbeiten.
 
Deinen Webserver.

So wie ich es beschrieben habe, bräuchte der Kunde gar nicht die IP-Adresse von deinem Webserver, es seiden er will seine eigene Domain auf deinen Webserver umleiten. Das kann er tun, aber du musst dann trotzdem die Konfiguration ändern.

Jetzt bin ich ehrlich gesagt mehr verwirrt, sorry. Bin mir nicht sicher, ob wir das gleiche meinen. Habe es jetzt nochmal farblich hinterlegt.

Ich will:
User leitet die URL von meiner Applikation (also sein Webshop: myapplication.com/shop/user1) bei sich um.

1. User legt bei sich dann eine Subdomain (shop.myuser.com) an, die auf myapplication.com/shop/user1 verweist.
-> Das ist ja kein Problem und ohne weitere Dinge schnell erledigt.

2. Ich will nun aber, dass shop.myuser.com die ganze Zeit in der Adresszeile steht. Es soll also nicht so, sein, dass jemand shop.myuser.com öffnet und weitergeleitet wird, sodass in der Adresszeile dann wieder myapplication.com/shop/user1 steht.
Der User soll also immer noch auf
shop.myuser.com sich befinden (Adresszeile), aber der Inhalt der Page ist eig. dann myapplication.com/shop/user1.

3. Ebenfalls soll man sich immer noch auf shop.myuser.com befinden (in der Adresszeile vom Browser), wenn man eine andere Seite des Wevshops aufruft. Also ruft man zB ein anderes Produkt vom Webshop auf, welches dann von der Applikation bspw. diese URL ist:
myapplication.com/shop/user1/product1 , dann soll aber in der Browserzeile die URL von der Subdomain sein, also: shop.myuser.com/product1

Um das zu realisieren, was genau muss
a) in meiner Applikation eingestellt werden machen (im Besten Fall nichts)
b) Welche Schritte muss der User auf seiner Homepage machen?
 
1. User legt bei sich dann eine Subdomain (shop.myuser.com) an, die auf myapplication.com/shop/user1 verweist.
-> Das ist ja kein Problem und ohne weitere Dinge schnell erledigt.

Wenn der Kunde möchte, dass in der Adresszeile shop.myuser.com steht, musst du für shop.myuser.com den vHost anlegen und der Kunde muss den A-Record anlegen, der auf die IP deines Webserver zeigt (die Alternative dazu im letzten Absatz).

2. Ich will nun aber, dass shop.myuser.com die ganze Zeit in der Adresszeile steht.

Alternative:
Der Kunde könnte einen reverse Proxy (z.B. nginx) einrichten, wenn er weiß wie so etwas geht.
Dann bräuchtest du gar nichts machen.
Dann müsste sich der Kunde selbst um die Domain und die Weiterleitung kümmern.
Die Adresse bleibt dann auch in der Addresszeile stehen, es seiden deine Applikation ersetzt die URL.
Das müsstest du vorher einmal testen, ob ein reverse Proxy mit deiner Webapplikation fehlerfrei funktioniert.
 
musst du für shop.myuser.com den vHost anlegen
diesen Punkt verstehe ich noch nicht ganz... Was genau ist hier zu tun auf der Seite meiner Applikation?

Muss ich zwingend die Subdomain anlegen oder könnte ich das auch durch Redirect lösen?
Also ich meine zB bei: user1.myshop.com -> dann könne ich doch rausbekommen, dass user1 meine Variable ist.
Anschließend lade ich eben bei mir in der Applikation nur den Content von "user". (Filterung in meiner DB zu der ID von User1 bspw.)

Würde das gerne so realisieren, wie in diesem Video:
https://youtu.be/EGeJ5tgt04Q
 
Last edited by a moderator:
diesen Punkt verstehe ich noch nicht ganz... Was genau ist hier zu tun auf der Seite meiner Applikation?

Wenn dein Server die Domain shop.myuser.com bedienen soll, muss der Besitzer der Domain die IP deines Webservers als A-Record eintragen und du legst den vHost an, damit dein server shop.myuser.com auch ausliefert.
Der Webserver des Kunden würde gar nichts machen, da dann bei der Subdomain dein Server verwendet wird.

Das mit user1.myshop.com ist genau das gleiche, nur dass diese Domain dir gehört.
Kannst auch user1.myshop.com nehmen, aber dann steht diese Domain in der Adresszeile des Besuchers.

Da ich deine Applikation nicht kenne und auch nicht weiß ob du überhaupt einen Nginx oder Apache2 einsetzt, ist das schwierig überhaupt eine konkrete Aussage zu treffen.

PS: Deswegen habe ich dir auch beschrieben, wie ein Webserver arbeitet. Das muss man verstanden haben, sonst steht man vor einem Problem, dass man nicht lösen kann, weil einfach das Verständnis dafür fehlt. Da so zu erklären, dass es jeder versteht, ist nicht einfach.
 
Back
Top