web-dev-qa-db-ja.com

Apache VirtualHostを使用したワイルドカードサブドメインの作成

このような状況にしたい:

  1. ユーザーがこのURLを使用してリクエストした場合:example.comまたはwww.example.com、ユーザーはこのディレクトリにindex.phpを表示します/home/admin1/public_html/

  2. しかし、ユーザーが他のサブドメイン(ワイルドカード)を使用して要求する場合(例:freediscount.example.com)、ユーザーはこのパスにindex.phpを表示します:/home/admin1/public_html/userweb/freediscount.example.com

私のホスティングのテクニカルサポートは、この方法を使用することを提案しています: http://www.wiredstudios.com/php-programming/setting-up-wildcard-dns-for-subdomains-on-cpanel.html

そのチュートリアルに基づいて、PHPには新しいジョブがあります...サブドメインでユーザーがリクエストしたときに特定のフォルダーにリダイレクトします。この方法は好きではありません。私にとっては、 Apacheがこれを処理できる場合。

私が必要とするものにほぼ近いのはこの方法です ワイルドカードサブドメインと静的サブドメインの仮想ホスト

しかし、VirtualHost設定に問題があります。そのような状況でVirtualHostを正しく作成するにはどうすればよいですか?

これが私がやったことですが、うまくいきませんでした:

## I think this one is for www or without www, automatically generated with WHM
<VirtualHost xx.xx.xx.xx:80> 
ServerName example.com
ServerAlias www.example.com
DocumentRoot /home/admin1/public_html
</VirtualHost>

## Here's what I'm trying to add
<VirtualHost xx.xx.xx.xx:80>
    ServerName example.com
    DocumentRoot /home/admin1/public_html/userweb/*
</VirtualHost>
16
Saint Robson

ワイルドカードサブドメインは、Apache仮想ホストを使用して間違いなく可能です。

基本的に同じ要件があり、Apacheのmod_vhost_alias.soモジュール。 http-vhosts.confファイル:

DocumentRoot "/home/admin1/public_html/userweb/" 
<Directory "/home/admin1/public_html/userweb/"> 
    Options None 
    AllowOverride None 
    Order allow,deny 
    Allow from all 
</Directory>

<VirtualHost *:80>
    DocumentRoot /home/admin1/public_html/
    ServerName www.example.com
</VirtualHost>

<VirtualHost *:80> 
    VirtualDocumentRoot /home/admin1/public_html/userweb/%1.example.com/ 
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /home/admin1/public_html/
    ServerName example.com
</VirtualHost>

私はこれをテストしていませんが、私のために働いたソリューションにかなり近いことに注意してください。

私の解決策の詳細はこちらです: http://www.calcatraz.com/blog/wildcard-subdomains-in-Apache-1422

14
Dan

これで試してください:

NameVirtualHost *:80

<VirtualHost *:80>
  DocumentRoot /home/admin1/public_html/
  ServerName www.example.com
</VirtualHost>

<VirtualHost *:80>
  DocumentRoot /home/admin1/public_html/userweb/freediscount.example.com
  ServerName  other.example.com
  ServerAlias *.example.com
</VirtualHost>

<VirtualHost *:80>
  DocumentRoot /home/admin1/public_html/
  ServerName example.com
</VirtualHost>

仮想ホストの順序とその特異性が重要です。

9
tonino.j