
Había planeado migrar un sitio web a otro servidor,
Entonces, después de copiar el código y la base de datos, etc., y cambiar mi archivo de hosts en Windows, todo funcionó casi como se esperaba. Podría cargar el sitio y usarlo para realizar pruebas antes de redirigir el dominio.
Sin embargo, hay una funcionalidad que utiliza una biblioteca php que encuentra URL de imágenes en código html. Debido a esto, debo usar URL http externas para acceder a las imágenes, aunque las imágenes estén en el mismo servidor.
Mi problema,
Aunque todo lo demás del sitio utiliza el nuevo servidor local, este fragmento de código todavía mira el servidor en vivo como si no se hubiera configurado ninguna configuración de host virtual para él.
En mi /etc/sites-enabled/example.conf tengo un host virtual configurado...
<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>
Esto funciona como se esperaba, salvo el problema descrito anteriormente, parece estar ignorándolo en ese caso.
Estaría seguro de que esto funcionaría si cambiara los registros A reales para ese dominio, pero primero necesito probarlo.
EDITAR: Solo para aclarar más,
Estoy usando Apache2 con Ubuntu.
Mi pregunta central es,
Cuando mi código php funciona con una URL de imagen, por ejemplo <img src="http://www.example.com/myimage.jpg" />
, ¿por qué solo en un caso particular carga esta imagen desde el servidor REAL al que apunta ese dominio, y no desde el servidor local como todo lo demás?
Respuesta1
Porque el código PHP se ejecuta en el nuevo servidor, no en su cliente. A menos que realice algún cambio en la configuración DNS de ese servidor (por ejemplo, agregando una entrada al archivo de hosts), PHP seguirá creyendo (correctamente) que www.example.com está en el servidor activo. PHP no analiza la configuración de Apache y no tiene conocimiento de que el servidor en el que se ejecuta tiene un Apache que responderá a las solicitudes de www.example.com.