
ウェブサイトを別のサーバーに移行する予定でしたが、
コードやデータベースなどをコピーし、Windowsのホストファイルを変更すると、すべてがほぼ期待どおりに機能しました。ドメインを再ポイントする前に、サイトをロードしてテストに使用することができました。
ただし、HTML コード内の画像 URL を検索する PHP ライブラリを使用する機能が 1 つあります。このため、画像が同じサーバー上にある場合でも、画像にアクセスするには外部の 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>
これは、上で説明した 1 つの問題を除けば期待どおりに動作していますが、その場合は無視されているようです。
そのドメインの実際の A レコードを変更すれば、これが機能すると確信していますが、まずはテストする必要があります。
編集:さらに明確にするために、
私はUbuntuでApache2を使用しています。
私の核心的な疑問は、
たとえば、私の PHP コードが画像 URL を操作しているとき、<img src="http://www.example.com/myimage.jpg" />
なぜ特定の 1 つのケースでのみ、そのドメインが指している実際のサーバーからこの画像が読み込まれ、他のすべての場合のようにローカル サーバーから読み込まれないのでしょうか。
答え1
PHP コードはクライアントではなく新しいサーバー上で実行されるためです。そのサーバーの DNS 構成に何らかの変更を加えない限り (たとえば、hosts ファイルにエントリを追加するなど)、PHP は www.example.com がライブ サーバー上にあると (正しく) 認識します。PHP は Apache 構成を調べず、実行中のサーバーに www.example.com の要求に応答する Apache があるかどうかは認識しません。