Apache でサブドメインとして構成されたいくつかのサイトを持つ LAMP サーバーを使用しています。標準では、各サイト/サブドメインは /var/www/ 内のきちんとしたディレクトリにあります。いくつかの VirtualHosts を使用し、それぞれに DocumentRoot と ServerName を指定して、/etc/apache2/sites-available/ 構成ファイルで各サイトが存在する場所を Apache に伝えました。
ページに JavaScript を記述している場合、次のように、サイト ルートに基づいて他のページを参照できます。
include '/includes/something.js';
しかし、PHP で同じことを行うことはできません。PHP コードにファイルをインクルードする場合は、次のように入力する必要があります。
include '/var/www/site_name/includes/something.php';
(../includes/something.php のような相対参照を行うことはできますが、それはここでの論点ではありません。) なぜ /var/www/ が必要なのか混乱しましたが、これまでは単に迷惑。完全なディレクトリが必要であることがわかったら、それを回避するようにコーディングできました。しかし、今、PHPlist をインストールしようとしています。設定を保存するたびに、https://phplist.mydomain.org/var/www/phplist/admin/?page=configure のような URL にリダイレクトされます。もちろん、「ページが見つかりません」というエラーが表示されます。
私のApache / PHPセットアップがサイトルートをどのように扱うかについて、何かが台無しになっているようです。私は PHPlist コードを掘り下げていませんし、特に掘り下げたいとも思っていません。しかし、/var/www/ プレフィックスを必要とせずに PHP にファイルを含めることができるように設定を修正できれば、PHPlist もプレフィックスが過剰な URL を提供しなくなると思います。
参考までに、私の Apache 仮想ホストのほとんどがどのように見えるかを以下に示します。私の具体的な質問は次のとおりだと思います:1)私があなたに言ったことで、修正が必要なことは何かわかりますか?2) この奇妙さを理解するために、どこを見ますか、次に何を試みますか?
<VirtualHost 95.102.96.250:443>
ServerName phplist.mydomain.org
DocumentRoot /var/www/phplist
ServerAdmin admin@mydomain.org
<Directory /var/www/phplist/>
Options +FollowSymLinks
AllowOverride All
order allow,deny
allow from all
</Directory>
</VirtualHost>
これが私の基本的な誤解であることを願っています。RingTFM を試しましたが、ここで何が起こっているのかわかりません。前もって感謝します!