Apache を書き換えてフォルダをドメインに割り当てる

Apache を書き換えてフォルダをドメインに割り当てる

正しい方向を指し示してください。

サーバー上でドメインを設定するために .htaccess を使用しています。

/domain.com/* フォルダのファイルにアクセスするには、domain.com が必要です。ファイルが存在しない場合は、/domain.com/index.php をロードし、domain.com/images/image.jpg はファイル /domain.com/images/image.jpg をロードする必要があります。

1 つは、ブラウザに 302「ファイルが移動されました」という通知を送信せずにすべてをロードする必要があることです。

ご協力いただきありがとうございます!

答え1

ドメインが多数ある場合、またはドメインが少数であっても、それらすべてが多かれ少なかれ同じ構成である場合、これは次のような状況です。動的マス仮想ホスティングhttpd.confは、 用に作成されています。次のような内容が、 ファイル (または に含まれるファイルhttpd.conf)に記述されます。

UseCanonicalName Off
VirtualDocumentRoot /var/www/%0/htdocs
ErrorLog /var/www/logs/error_log
CustomLog /var/www/logs/access_log combined

私も提案したい

DirectoryIndex index.php

index.phpクライアントがファイル名を指定しない場合は、ディレクトリ内のファイルをロードします。

答え2

ファイル パスにマップするドメインごとに仮想ホストを作成し、各仮想ホストの DocumentRoot をファイル システム上の実際のパスに指定する必要があります。次に、DEFAULT 仮想ホストがあることを確認します。これにより、設定されていないドメインに対する他のすべての要求で DEFAULT 仮想ホストが使用されるようになります。最後に、カスタム 404 エラー ハンドラーを作成します。これにより、要求されたファイルが存在しない場合は、代替コンテンツが提供されます。汎用メッセージと /images/image.png を表示する custom_404.php という PHP を作成する必要があります。

# Default Domain (Undefined domains will fall back to this)
<VirtualHost *:80>
    ServerAlias www.defaultdomain.com
    DocumentRoot /var/www/default/htdocs
    ErrorDocument 404 /custom_404.php
    ErrorLog /var/www/default/logs/error_log
    CustomLog /var/www/default/logs/access_log combined
</VirtualHost>

# domain1.com
<VirtualHost *:80>
    ServerName domain1.com
    ServerAlias www.domain1.com
    DocumentRoot /var/www/domain1.com/htdocs
    ErrorDocument 404 /custom_404.php
    ErrorLog /var/www/domain1.com/logs/error_log
    CustomLog /var/www/domain1.com/logs/access_log combined
</VirtualHost>

# domain2.com
<VirtualHost *:80>
    ServerName domain2.com
    ServerAlias www.domain2.com
    DocumentRoot /var/www/domain2.com/htdocs
    ErrorDocument 404 /custom_404.php
    ErrorLog /var/www/domain2.com/logs/error_log
    CustomLog /var/www/domain2.com/logs/access_log combined
</VirtualHost>

お役に立てれば!

-ケビン

答え3

これを整理するには仮想ホストを使用する必要があります。サンプルの仮想ホスト ファイルを以下に示します。

<VirtualHost *:80>
    ServerName example.net
    ServerAlias www.example.net
    ServerAdmin [email protected]
    DocumentRoot /var/www/vhosts/www.example.net/html
    ErrorLog /var/www/vhosts/www.example.net/logs/errors.log
    Customlog /var/www/vhosts/www.example.net/logs/access.log combined

</VirtualHost>

このファイルを/etc/httpd/conf.d/内に置き、例えばvhost_example.net.confという名前を付けます。

そして、/etc/httpd/conf/httpd.confの最後の行に以下を追加します。

/etc/httpd/conf.d/vhost_example.net.conf を含める

(または単に/etc/httpd/conf.d/*.confを含める)そしてhttpd.confファイルでは、この行をコメント解除することを忘れないでください

名前仮想ホスト *:80

関連情報