
웹사이트를 다른 서버로 이전할 계획이었는데,
따라서 코드와 데이터베이스 등을 복사하고 Windows에서 호스트 파일을 변경하면 모든 것이 거의 예상대로 작동했습니다. 도메인을 다시 지정하기 전에 사이트를 로드하여 테스트용으로 사용할 수 있었습니다.
그러나 HTML 코드에서 이미지 URL을 찾는 PHP 라이브러리를 사용하는 기능이 하나 있습니다. 이 때문에 이미지가 동일한 서버에 있더라도 이미지에 액세스하려면 외부 http URL을 사용해야 합니다.
내 문제,
사이트의 다른 모든 항목이 새 로컬 서버를 사용하고 있음에도 불구하고 이 코드 조각은 마치 가상 호스트 설정이 설정되지 않은 것처럼 여전히 라이브 서버를 조회하고 있습니다.
내 /etc/sites-enabled/example.conf에 가상 호스트가 설정되어 있습니다...
<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>
위에서 설명한 한 가지 문제만 제외하면 예상대로 작동하고 있으며, 이 경우에는 무시하는 것 같습니다.
해당 도메인의 실제 A 레코드를 변경하면 이것이 작동할 것이라고 확신하지만 먼저 테스트해야 합니다.
편집: 더 명확히 하기 위해,
우분투에서 Apache2를 사용하고 있습니다.
내 핵심 질문은,
내 PHP 코드가 이미지 URL(예: )을 사용하여 작업할 때 <img src="http://www.example.com/myimage.jpg" />
왜 특정 경우에만 해당 도메인이 가리키는 실제 서버에서 이 이미지를 로드하고 다른 모든 서버와 마찬가지로 로컬 서버에서 로드하지 않습니까?
답변1
PHP 코드가 클라이언트가 아닌 새 서버에서 실행되기 때문입니다. 해당 서버의 DNS 구성을 변경하지 않는 한(예: 호스트 파일에 항목 추가) PHP는 여전히 www.example.com이 라이브 서버에 있다고 (올바르게) 믿습니다. PHP는 아파치 구성을 조사하지 않으며 PHP가 실행 중인 서버에 www.example.com 요청에 응답하는 아파치가 있다는 사실을 전혀 모릅니다.