仮想ホストのフォールバックを作成しようとしています。私の構成は次のようになります。
# Fetch all pre-defined hosts
Include "conf/extra/vhosts/*.conf"
# Fallback
NameVirtualHost *:80
<Directory "C:/LocalServer/usr">
Options Indexes FollowSymLinks Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
<VirtualHost *:80>
VirtualDocumentRoot "C:/LocalServer/usr/%-1/projects/%-2+/public/"
</VirtualHost>
ここでの目的は次のとおりです。 にアクセスしようとするとhttp://test.lab/
、次のディレクトリが自動的に取得されるようにする必要がありますC:/LocalServer/usr/lab/projects/test/public/
。
これで、フォルダーと空のインデックス ファイル ( index.php
) が作成されました。それにもかかわらず、Apache は空のディレクトリ インデックス (「Index of」) を表示し続けます。
今何をすべきかよくわかりません。いくつか試してみましたが、どれもうまくいかないようです。
何か案は?
更新 - 6 月 1 日
最初の回答(まあ、唯一の回答)に基づいて、このコードを使用しています。
<VirtualHost *:80>
UseCanonicalName Off
ServerAlias *.lab
VirtualDocumentRoot "C:/LocalServer/%2/%1/public"
<Directory "C:/LocalServer/%2/%1/public">
Options Indexes FollowSymLinks Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Apache からアクセス禁止エラーが表示されるようになりました。ディレクトリが存在しない場合、通常、このエラーを受け取るのでしょうか? は存在し、ディレクトリにC:/LocalServer/lab/test/public
は空が存在します。index.php
public
一般的なエラー ログのエラー:[client 127.0.0.1:49342] AH01797: client denied by server configuration: C:/LocalServer/lab/test/public/
<Directory/>
グループを削除しても、何も変わりません。それでもエラーが発生します。%n
(そのグループでも使えますか?)
クイックノート:
Include "conf/extra/vhosts/*.conf"
以前は機能していなかったのは、命令によって他の仮想ホストがインポートされていたためです。それをコメントアウトすると (したがって、Labs ルールだけを作成すると)、アクセス禁止エラーが発生しました。
また、フォルダーを使用しなくなったことにも注意してください。usr
各ラボは現在、lab
フォルダーの下にありますLocalServer
。
更新 2
ブロックで<Directory/>
は変数の挿入が許可されていないようですVirtualDocumentRoot
。
更新 3 - 解決策が見つかりました
それは現在機能しています - 助けなしではそれを行うことはできなかったでしょう. 最終的なコードは次のとおりです。
<VirtualHost lab:80>
UseCanonicalName Off
ServerAlias *.lab
VirtualDocumentRoot "C:/LocalServer/%2/%1/public"
<Directory "C:/LocalServer/lab/*/public">
Options Indexes FollowSymLinks
AllowOverride All
Order Allow,Deny
Allow from all
</Directory>
</VirtualHost>
更新 4 (2015 年 4 月)
興味のある方向けの新しいディレクティブ (最新の Apache 2.4 を使用):
<VirtualHost *:80>
UseCanonicalName Off
ServerAlias *.local
VirtualDocumentRoot "D:/home/%-2+/public_html"
<Directory "D:/home/*/public_html">
Require all granted
AllowOverride All
Options Indexes FollowSymLinks
</Directory>
</VirtualHost>
これは、 Acrylic DNS Proxyと組み合わせることで、魔法のようになります。
更新 5 (2016 年 12 月)
私は現在、マクロアプローチを使用しています。
# Directory Macro - Default Directory configuration on a per-vhost basis
<Macro Directory $dir>
<Directory "z:/var/www/$dir/public_html">
Require all granted
Options Includes Indexes FollowSymLinks
AllowOverride All
</Directory>
</Macro>
# LocalSub Macro - For specific *.*.local subs that require their own root
<Macro LocalSub $sub $domain>
<VirtualHost 127.0.0.1>
ServerName $sub.$domain.local
DocumentRoot “z:/var/www/$domain/$sub/public_html”
Use Directory $domain/$sub
</VirtualHost>
</Macro>
Use LocalSub blog rockettpw
# Main virtual host
<VirtualHost 127.0.0.1>
UseCanonicalName Off
ServerAlias *.local *.*.local
VirtualDocumentRoot “z:/var/www/%-2/public_html”
Use Directory *
</VirtualHost>