web-dev-qa-db-ja.com

Lighttpdはサブドメインをサブフォルダーに書き換えます

ワイルドカードDNSが指すサーバー(それ自体がサブドメイン上にあります)があります。サーバーはLighttpdとPHPを実行しています。

http://any-subdomain.server.example.comに書き換えて、そこから提供するには、http://server.example.com/site/any-subdomainへのリクエストが必要です。ユーザーに対して完全に透過的である必要があります。

これが私の関連する設定です:

$HTTP["Host"] =~ "^(.*)\.server\.example\.com$" {
    url.rewrite-once = ( "^(.*)" => "/site/%1/$1" )
}

subdomain.server.example.com/site/subdomain/subfolderにリダイレクトされてから404にリダイレクトされるサブフォルダーを除いては機能しているようです。

2
Skylar Ittner

書き換えを使用するよりも良い方法を見つけました。代わりに、私は mod_simple_vhost を使用しました:

simple-vhost.server-root = "/var/www/site/"
simple-vhost.default-Host = "myquick.club"
simple-vhost.document-root = "www"

これは、この場合にmod_rewriteを使用するよりもはるかに単純で簡単です。見つけるのは面倒でしたが、これが将来他の人に役立つことを願っています。

0
Skylar Ittner

url.rewrite-onceRLパス(およびクエリ文字列)を変更します。書き換えルールは、ディスク上のフォルダに書き換えようとしているように見えます。

ホストを「書き換える」ことはできませんが、同じ物理ファイルマッピング(およびfastcgiバックエンドと...)で2つのホスト名を処理できます。たとえば、他の仮想ホストからserver.document-root設定をコピーするか、他の仮想ホストを両方のホスト名に条件付きで一致させることができます。

「キャッチオール」のデフォルトの仮想ホストブロックがある場合は、各構成オプションについて、最後のアクティブなブロック設定が他のすべてを上書きすることに注意してください(-pオプションを使用して、+=の評価後に内部順序を確認しますなど)、デフォルトの仮想ホストから始めます。

念のために言っておきますが、「関連する」構成には、2番目だけでなく、少なくとも両方のvhostの部分が含まれています:)

0
Stefan