
Ich hatte geplant, eine Website auf einen anderen Server zu migrieren,
Nachdem ich den Code und die Datenbank usw. kopiert und meine Hosts-Datei unter Windows geändert hatte, funktionierte alles fast wie erwartet. Ich konnte die Site laden und sie zum Testen verwenden, bevor ich die Domäne neu ausrichtete.
Es gibt jedoch eine Funktion, die eine PHP-Bibliothek verwendet, die Bild-URLs im HTML-Code findet. Aus diesem Grund muss ich externe HTTP-URLs verwenden, um auf die Bilder zuzugreifen, obwohl sich die Bilder auf demselben Server befinden.
Mein Problem,
Obwohl alles andere auf der Site den neuen lokalen Server verwendet, betrachtet dieser Code den Live-Server immer noch so, als wären keine virtuellen Hosteinstellungen dafür eingerichtet.
In meiner /etc/sites-enabled/example.conf habe ich einen virtuellen Host eingerichtet …
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName example.com
ServerAlias www.example.com
DirectoryIndex index.php
DocumentRoot /var/www/html/example
ScriptAlias /cgi-bin /var/www/html/example/cgi-bin/
<Location /cgi-bin>
Options +ExecCGI
</Location>
ErrorLog /var/www/html/example/error.log
CustomLog /var/www/html/example/access.log combined
</VirtualHost>
Dies funktioniert wie erwartet, abgesehen von dem oben beschriebenen Problem; in diesem Fall scheint es ignoriert zu werden.
Ich wäre zuversichtlich, dass dies funktionieren würde, wenn ich die tatsächlichen A-Einträge für diese Domäne ändern würde, aber ich muss es zuerst testen.
EDIT: Nur um das klarzustellen,
Ich verwende Apache2 mit Ubuntu.
Meine Kernfrage ist,
Wenn mein PHP-Code beispielsweise mit einer Bild-URL arbeitet, <img src="http://www.example.com/myimage.jpg" />
warum wird das Bild dann nur in einem bestimmten Fall vom ECHTEN Server geladen, auf den diese Domäne verweist, und nicht wie alles andere vom lokalen Server?
Antwort1
Weil der PHP-Code auf dem neuen Server ausgeführt wird, nicht auf Ihrem Client. Sofern Sie keine Änderungen an der DNS-Konfiguration dieses Servers vornehmen (z. B. einen Eintrag zur Hosts-Datei hinzufügen), wird PHP weiterhin (korrekterweise) glauben, dass www.example.com auf dem Live-Server liegt. PHP sieht sich die Apache-Konfiguration nicht an und weiß nicht, dass der Server, auf dem es läuft, einen Apache hat, der auf Anfragen von www.example.com antwortet.