Wie erstellt man eine 301-Weiterleitung?

shortrange

Banned
Registriert
Okt. 2013
Beiträge
626
Hallo,

ich bin gerade dabei einen LAN-internen Server bei mir im Heimnetz einzurichten. Als DHCP-Server verwende ich eine Fritzbox.

Auf diesem Server läuft bereits ein MediaWiki, welches unter "server.fritz.box/MediaWiki/" erreicht werden kann.
Wie kann ich eine dauerhafte Weiterleitung, einrichten, die beim Aufruf von "server.fritz.box" auf "server.fritz.box/MediaWiki/" weiterleitet? Ich glaube eine 301-Weiterleitung ist in diesem Fall die richtige Wahl, oder?

In diversen Anleitungen im Internet steht, dass das mit der Datei ".htaccess" funktioniert. Nur leider habe ich eine solche Datei nicht.

Wie kann ich die Weiterleitung trotzdem einrichten?
 
Normalerweise sollte es reichen eine Datei .htaccess anzulegen und dort dann die Weiterleitung hineinzuschreiben.
Code:
RewriteEngine On
Redirect 301 /verzeichnis/dokument.html http://www.deinedomain.de/dokument.html

Oder mittels PHP, dann sieht das ganze so aus:
PHP:
<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.zieldomain.de/dokument.php");
header("Connection: close");
?>

Wichtig ist hierbei, dass die Zieldatei die Endung .php hat.
 
Was für ein Webserver nutzt du denn?

Solltest du eine Variante wollen, die mit jedem funktioniert, dann packst du ins Stammverzeichnis eine index.html, in die du
Code:
<meta http-equiv="refresh" content="0; URL=http://server.fritz.box/MediaWiki/">
schreibst.
 
Bagbag schrieb:
Was für ein Webserver nutzt du denn?
Es ist eine Synology DiskStation mit dem Standard-Webserver "Web Station".

Bagbag schrieb:
Solltest du eine Variante wollen, die mit jedem funktioniert, dann packst du ins Stammverzeichnis eine index.html, in die du
Code:
<meta  http-equiv="refresh" content="0;  URL=http://server.fritz.box/MediaWiki/">
schreibst.
Bei dieser Variante muss man immer auf "Erlauben" klicken, damit die Weiterleitung funktioniert. Gibt es auch die Möglichkeit, das ohne "Erlauben", also automatisch, zu machen?

TheKenny schrieb:
Oder mittels PHP, dann sieht das ganze so aus:
PHP:
<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.zieldomain.de/dokument.php");
header("Connection: close");
?>

Wichtig ist hierbei, dass die Zieldatei die Endung .php hat.

Es handelt sich allerdings nicht um eine Zieldatei, sondern um einen Link, also weder .php noch .html.
 
Das ist mir neu, dass da eine Meldung mit erlauben kommt.

Bei jedem halbwegs akzeptable Webserver kann eine index Datei angegeben werden, also die Datei, die aufgerufen wird, wenn keine in der URL angegeben ist. Wie das bei "Web Station" geht kann ich dir aber nicht sagen.

Edit: wie ich mir schon fast gedacht habe, ist das auch einfach einer der großen Webserver, in diesem Falle Apache.

Google mal nach Apache redirect. Wenn du nichts findest, kann ich dir später ein Beispiel geben (jetzt gerade nicht, da ich unterwegs bin).
 
Zuletzt bearbeitet:
Die Lösung mittels PHP sollte auch mit Link funktionieren, oder wie meinst du das?

PHP:
<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.zieldomain.de/");
header("Connection: close");
?>
 
Ich denke er meint dass er nicht seite.de/datei.php aufruft sondern einfach nur seite.de/, aber da man bei Apache eine index Datei einfach per vhost und htaccess festlegen kann, ist das ja kein problem.
 
Bagbag schrieb:
wie ich mir schon fast gedacht habe, ist das auch einfach einer der großen Webserver, in diesem Falle Apache.

Ja, richtig, es scheint sich um einen Apache-Server zu handeln.

In der Synology Diskstation gibt es einen Ordner, der heißt "web". In diesem befinden sich alle Dateien, das ist zum einen der Mediawiki-Ordner und zum anderen die Datei "index.html".

Beim Aufruf von "http://server.fritz.box/" soll man auf "http://server.fritz.box:5000" weitergeleitet werden, wo sich die Anmeldeoberfläche befindet. In der "index.html" steht folgendes:

Code:
<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://server.fritz.box:5000");
header("Connection: close");
?>

Aber die Seite bleibt beim Aufruf nur weiß, es passiert nichts. Woran liegt das?
 
Zuletzt bearbeitet:
Schreib mir mal eine PN mit deiner Teamviewer ID und dem PW, dann helf ich dir so direkt.
 
Bagbag schrieb:
Schreib mir mal eine PN mit deiner Teamviewer ID und dem PW, dann helf ich dir so direkt.
Vielen Dank für das Angebot, aber ich bin mir sicher, dass wir das auch hier klären können :)
 
Unter http://server.fritz.box:5000 .
Aber das spielt ja letztendlich auch nicht die Rolle, wenn der PHP-Redirect nicht funktioniert. Denn er funktioniert ja bei jedem Ziel nicht.

Nochmal zur PHP-Weiterleitung:
Die "index.html" enthält jetzt nur folgenden Code:
Code:
<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://server.fritz.box:5000/");
header("Connection: close");
?>
Muss da noch irgendwas geändert werden? Soll die Datei in "index.php" o.ä. umbenannt werden? Woher weiß der Browser denn, wenn er eine .html-Datei aufruft, dass er nur PHP-Code in der Datei vorfindet und führt diesen Code dann auch aus?
 
Ja, du musst sie in index.php umbenennen.

PHP Code wird nicht im Browser, sondern beim Server ausgeführt.
 
Bagbag schrieb:
Ja, du musst sie in index.php umbenennen.
Habe ich gemacht, jetzt funktionierts! Vielen Dank!

Und auch über die ".htaccess"-Datei funktioniert es jetzt. Sie befindet sich im selben Ordner wie die "index.php".


Noch zwei andere Fragen:

1.
Bei uns im Heimnetzwerk lautet die Domain ja "fritz.box". Der Server ist dementsprechend unter "server.fritz.box" zu erreichen.

Wie kann ich eine weitere lokale Domain vergeben, die auf eine andere weiterleitet? Also z.B. "s.fritz.box" leitet auf "server.fritz.box" weiter, aber es gibt kein eigenes Gerät mit dem Namen "s.fritz.box".

2.
Die Anmeldeoberfläche ist nur über https erreichbar. Die HTTP-Oberfläche liegt unter Port 5000 und leitet auf die HTTPS-Oberfläche unter Port 5001 weiter. Wenn ich allerdings von "http://server.fritz.box" weiterleite erhalte ich eine 400-Fehlermeldung (Plain HTTP wurde auf HTTPS weitergeleitet). Ich kann natürlich zuerst auf die 5000er gehen, die dann auf die 5001er weiterleitet, aber das muss sich doch auch direkt bei der 5001er lösen lassen. Aber wie?
 
Zuletzt bearbeitet:
1. Eine Weiterleitung ist per DNS nicht möglich (zumindest mir nicht bekannt). Also entweder machst du einen A-Record auf die gleiche IP oder machst einen CNAME auf server.fritz.box und lässt in beiden Fällen Apache ebenfalls auf s.fritz.box lauschen oder du machst ein Wildcard Record (nennt man das so?) -> *.fritz.box lässt du auf die IP des Servers zeigen und Apache stellst du so ein, dass er ohne spezifische Domain lauscht - dann kannst du über jede beliebige Subdomain drauf zugreifen.

2. Verstehe ich nicht so ganz, dein Problem ist hier irgendwie zeitgleich die Lösung?!
 
Bagbag schrieb:
1. Eine Weiterleitung ist per DNS nicht möglich (zumindest mir nicht bekannt). Also entweder machst du einen A-Record auf die gleiche IP oder machst einen CNAME auf server.fritz.box und lässt in beiden Fällen Apache ebenfalls auf s.fritz.box lauschen oder du machst ein Wildcard Record (nennt man das so?) -> *.fritz.box lässt du auf die IP des Servers zeigen und Apache stellst du so ein, dass er ohne spezifische Domain lauscht - dann kannst du über jede beliebige Subdomain drauf zugreifen.
Wie richte ich das ein? Denn A-Record und CNAME sind ja Einstellungen, die den LAN-internen DNS-Server betreffen, der ja in der Fritzbox liegt. Also hat diese Einstellung nichts mit dem Apache-Server zu tun, oder?

Bagbag schrieb:
2. Verstehe ich nicht so ganz, dein Problem ist hier irgendwie zeitgleich die Lösung?!
Ich möchte nur wissen, wie es funktioniert :)
Was ich mich eigentlich frage ist, wie schafft es die Synology Diskstation von der http-5000er-Seite auf die https-5001er-Seite weiterzuleiten, wenn ich das über die 301-Weiterleitung nicht hinbekomme.
Also wie kann man von HTTP auf HTTPS weiterleiten, ohne eine 400-er-Fehlermeldung zu erhalten (siehe auch https://de.wikipedia.org/wiki/HTTP-Statuscode#4xx_.E2.80.93_Client-Fehler )?
 
Ja, das sind DNS Einträge, die du dementsprechend am DNS-Server eintragen musst und nicht beim Webserver (Apache). Ob und wie das bei einer Fritzbox geht kann ich dir nicht sagen.

Zu 2. kann ich dir immer noch nichts sagen, da ich es nach wie vor nicht wirklich verstehe.

Eine einfache Weiterleitung von http auf https mache ich bei meinem Server so:

(Apache config)
Code:
<VirtualHost *:80>
        ServerName domain.tld
        Redirect permanent / https://domain.tld/
</VirtualHost>
 
Zuletzt bearbeitet:
Zurück
Oben