1

テスト VPS で数十のサイトを実行していますが、現在 mod_vhost_alias を使用して、新しいサイトを立ち上げるたびに新しい VirtualHost が必要になるのを回避しています。私の現在の構成は次のようになります。

<VirtualHost *:80>
  ServerName my.servername.com
  ServerAlias *
  VirtualDocumentRoot /var/www/%0/public_html
</VirtualHost>

私の /var/www ディレクトリ内には、各サイトに独自のディレクトリがあります。たとえば、私の個人ページへのパスは /var/www/personalsite.com/public_html/index.php です。これは、 http://personalsite.comへのリクエストに対してうまく機能しています。

ただし、これは、http: //www.personalsite.comに対する要求が入った場合には機能しません。私の他のサイトのいくつかでは、逆の問題があります。ディレクトリが /var/www/www.sitename.com/public_html である可能性があるため、http: //www.sitename.com の要求は問題ありません。ただし、http://sitename.comへのリクエストは機能しません。

リクエストが来たときに次のことを行うようにApache構成を設定する方法はありますか? この方法で行うことのパフォーマンスへの影響はありますか?

擬似コード:

1. Check if the directory or file exists. If it does, skip the rest of the rules 
       (but don't stop, in case a local .htaccess has rules in it for pretty URLs 
       in WordPress or Concrete5)
2. If the file/directory does not exist:
    1. If the host header starts with "www":
        1. remove the www from the host header and try the first rule again.
    2. If the host header does not start with "www":
        1. add "www" to the beginning  of the host header and try the first rule again
    3. If it still fails after trying both conditions:
        1. Go to a 404 error page

現在、約 20 の仮想ホストでこれを行っていますが、サイトごとに新しい仮想ホストを追加する必要がある場合、それはばかげているように思えます。mod_vhost_alias を使用するポイントは、そもそもこれらすべての VirtualHosts を必要としないようにすることでした。

4

1 に答える 1

0

ユーザーのリダイレクトに問題がないと仮定すると、 https : //stackoverflow.com/a/2361508/881615のいずれかの手法を使用できます。

  • mod_rewrite先頭の www を削除するルールを設定します。リクエストから、
  • または、各 vhost でリダイレクトを設定して、先頭の www でリクエストをリダイレクトします。トップレベルドメインに
于 2014-05-24T03:07:58.837 に答える