
我本來計劃將網站遷移到另一台伺服器,
因此,複製了程式碼和資料庫等,並更改了 Windows 上的主機檔案後,一切幾乎按預期工作。我可以加載該網站並在重新指向域名之前將其用於測試,
然而,有一項功能使用 php 庫來查找 html 程式碼中的圖像 url。因此,即使圖像位於同一台伺服器上,我也必須使用外部 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 記錄,我相信這會起作用,但我需要先對其進行測試。
編輯:只是為了澄清更多,
我在 Ubuntu 上使用 Apache2。
我的核心問題是,
當我的 php 程式碼使用圖像 url 時,例如<img src="http://www.example.com/myimage.jpg" />
,為什麼只有在一種特定情況下才會從該網域指向的真實伺服器載入該圖像,而不是像其他伺服器一樣從本機伺服器載入該映像?
答案1
因為 PHP 程式碼是在新伺服器上執行,而不是在您的客戶端上執行。除非您對該伺服器的 DNS 配置進行一些更改(例如,向主機檔案新增項目),否則 PHP 仍將(正確地)相信 www.example.com 位於即時伺服器上。 PHP 不會查看 apache 配置,也不知道它所運行的伺服器有一個能夠回應 www.example.com 請求的 apache。