Apache: Skript basierend auf Hostnamen laden

Apache: Skript basierend auf Hostnamen laden

Ich glaube nicht, dass das so kompliziert ist, aber es fällt mir schwer, den besten Weg dafür zu finden.

Wir haben eine Site unter site.example.commit 5 Seiten darunter. Nehmen wir an, diese 5 Seiten sind site.othersite.com/page1.html, page2.html, page3.html, page4.html, page5.html. Nun haben wir auch 5 andere Subdomains, lp1.OTHERSITE.com, lp2.othersite.com, lp3.othersite.com, lp4.othersite.com, lp5.othersite.com. Alle diese Domains werden auf demselben Server unter demselben Dokumentstamm gehostet. Was wir jetzt brauchen, ist, dass Apache eine transparente Umleitung (d. h. die Adressleiste ändert sich nicht) nach den folgenden Mustern durchführt:

lp1.othersite.com --> site.example.com/page1.html
lp2.othersite.com --> site.example.com/page2.html
lp3.othersite.com --> site.example.com/page3.html
lp4.othersite.com --> site.example.com/page4.html
lp5.othersite.com --> site.example.com/page5.html

Ist dies nur mit Apache möglich? Wenn nicht, habe ich bereits ein PHP-Skript geschrieben, um die Seiten site.example.com/page*.html in einem Iframe basierend auf dem eingehenden Hostnamen zu laden, aber ich bin mir nicht sicher, wie ich Apache anweisen kann, diese 5 lp*.othersite.com-Domänen an dieses PHP-Skript zu senden.

Ich hoffe, ich erkläre das Projekt ausreichend. Wir müssen die lp*-Subdomains grundsätzlich jeweils auf eine andere site.example.com/page*.html-Seite umleiten, ohne die Adresse in der Adressleiste zu ändern.

Tipps und Ratschläge sind willkommen. Ich konnte nur erreichen, dass Apache diese URLs auf mein PHP-Skript umleitete, aber die Adressleiste änderte sich und da es sich um eine Umleitung handelte, änderte sich auch die Adressleiste (zu diesem Zeitpunkt funktionierte das PHP-Skript nicht mehr, da sich der Hostname geändert hatte).

Antwort1

Richten Sie für jeden Hostnamen einen virtuellen Host ein. Verwenden Sie dabei denselben DocumentRoot, aber verwenden Sie:

DirectoryIndex page1.html

für lp1,

DirectoryIndex page2.html

für lp2 usw., sodass diese Seiten anstelle von als Standardseite verwendet werden index.html.

Beispielsweise http://lp3.othersite.com/wird beispielsweise Folgendes angezeigt page3.html. Sie können damit auch zu http://lp3.othersite.com/page1.htmlusw. navigieren, aber die Standardseite ist die Seite, die Sie über die DirectoryIndexDirektive angeben.

Antwort2

Vielleicht übersehe ich etwas, aber ich glaube, Sie verlangen lediglich nach virtuellen Hosts.https://httpd.apache.org/docs/2.2/vhosts/

Virtuelle Hosts erfordern mehrere DNS-Einträge, die auf denselben Webserver eingestellt sind. Apache stellt eine bestimmte Seite basierend auf dem verwendeten DNS-Namen bereit. Der Benutzer sieht den von ihm eingegebenen Eintrag, sofern Sie ihn nicht umleiten.

Antwort3

Sie können dies mit URL Rewrite tun. Nur ein kurzes Beispiel aus dem Stegreif (kann funktionieren, muss aber nicht):

RewriteCond %{HTTP_HOST} ^lp([0-9]).othersite.com [NC] 
RewriteRule ^(.*)$ page$1.html [NC,QSA] 

Antwort4

FolgenApache Virtual Host-Dokumentationfür jeden FQDN einzurichten VirtualHost, dann verwenden Siemod_dirzum Setzen DirectoryIndexund zur Weiterleitung verwendenmod_umschreiben.

Lernprogramm:

So erstellen Sie temporäre und permanente Weiterleitungen mit Apache und Nginx

verwandte Informationen