
この問題に遭遇したのは私が初めてではないと思いますが、どうやっても答えを見つけることができません。何を検索すればよいか分からないことが原因である可能性もありますが。
Ubuntuサーバーで多くのクライアントのウェブサイトをホストする必要があります。すべてうまく機能していますが、サーバー上でWordPressサイトを作成するプロセスを自動化できるように、動的仮想ホストを設定したいと考えています。モジュールは機能しており、満足していますが、ドメインとドメインmod_vhost_alias
に関する問題が発生しました。.com
.co.uk
.com.au
VirtualDocumentRoot
のようなドメインの場合、およびへのexample.com
すべてのリクエストが のようなディレクトリを指すようにしたいです。のようなドメインの場合、およびへのすべてのリクエストが のようなディレクトリを指すようにしたいです。www.exapmple.com
example.com
/var/webroot/example.com
example.co.uk
www.example.co.uk
example.co.uk
/var/webroot/example.co.uk
現在持っている VDR はこんな感じです...
VirtualDocumentRoot /var/webroot/%-2.0.%-1.0
これは最後から 2 番目と最後の部分を取得します。これは には最適ですexample.com
が、example.co.uk
ではディレクトリを探しているため/var/webroot/co.uk
、理想的ではありません。
これを回避する方法はありますか? 使用する必要がありますか? 必要mod_rewrite
な場合は、どのように使用すればよいですか?
答え1
これは、非常に特殊な(潜在的に脆弱な) を使用する代わりに、シンボリックリンクを分割するケースですRewriteRule
。
を使用しVirtualDocumentRoot /var/webroot/%0
、 内に の実際のディレクトリを指す/var/webroot/
シンボリックリンクを作成します。 これは、必要な深さのドメインでも機能します。また、何らかの理由で が異なるコンテンツを持つ必要があるサイトがある場合や、と同じコンテンツを指す必要がある場合に、もう少し柔軟になります。www.example.com
example.com
www
aaa.example.com
example.com
それが気に入らない場合は、次のようにすることもできますmod_rewrite
。
DocumentRoot /var/webroot
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$
RewriteRule ^/(.*)$ /%2/$1
これにより、常に 内のドメイン名が検索され/var/webroot
、www
検索前に がある場合は先頭から が削除されます。
www
あるいは、両方のドメインに同じコンテンツを提供する代わりに、すべてのリクエストを削除 (または追加) するようにリダイレクトすることもできます。