11

c:/wamp/www/ ディレクトリの外に仮想ホストを作成しようとすると、Wampserver はアクセスが拒否されたことを通知します。そのディレクトリ内で問題なく作成できます。フォルダーへのシンボリック リンクを作成しても機能しますが、シンボリック リンクを使用する必要はありません。うまくいかないのはなぜですか?

httpd.conf の最後で使用するコードは次のとおりです。

NameVirtualHost *:80

<VirtualHost *:80>  
DocumentRoot "c:/wamp/www" 
ServerName localhost 
ServerAlias localhost 
</VirtualHost> 

<VirtualHost *:80>
ServerName local.cascade
DocumentRoot c:/wamp/www/cascade/
</VirtualHost>

<VirtualHost *:80>
ServerName local.md9
ServerAlias local.md9
DocumentRoot "m:/Work/New MD9.ca/site/"
</VirtualHost>

<Directory "m:/Work/New MD9.ca/site/">
    Order Allow,Deny
    Allow from All
</Directory>

「カスケード」vh は正常に動作します。

4

5 に答える 5

26

http.confをもっと注意深く見るべきだったと思います。それほど長くはありませんが、ほとんどがコメントです。面倒な部分はこれでした。

# Deny access to the entirety of your server's filesystem. You must
# explicitly permit access to web content directories in other 
# <Directory> blocks below.
#

<Directory />
    AllowOverride none
    Require all denied
</Directory>

コメントアウトしたところ、安全性は低いと思いますが、現在は機能していますが、これは単なるテストサーバーです。

私は<Directory "m:/Work/New MD9.ca/site/">ビットがそれを処理することになっていると思いましたが、私はそうではないと思います。

于 2012-06-03T04:44:11.100 に答える
18

Require all denied質問が古いことはわかっており、機能していますが、この問題に遭遇し、タグを削除せずに解決しました。

Directory タグにRequire local(またはオンライン アクセス用の) タグを追加するだけです。Require all例えば

<VirtualHost *:80>
    ServerName local.md9
    ServerAlias local.md9
    DocumentRoot "m:/Work/New MD9.ca/site/"

    <Directory "m:/Work/New MD9.ca/site/">
        Order Allow,Deny
        Allow from All
        Require local
    </Directory>
</VirtualHost>

httpd.confのdocumentrootディレクトリで宣言された同じルールを見ることができます

于 2013-01-03T10:28:04.923 に答える
4

私は同じ問題を抱えていましたが、この質問を見た後、なんとか解決しました。

ただし、Apache 構成をどの程度安全にしたいかによっては、受け入れられた答えが最善の解決策ではない可能性があります。

ソリューションでは、セキュリティが侵害されないようにすることと、セキュリティが侵害されないようにすることの 2 つについて言及する必要があると思います。Apache バージョン 2.2 と 2.4 の間のアクセス制御構成の違いを理解する。

セキュリティが損なわれないようにする

提案された行をコメントアウトします。

<Directory />
    AllowOverride none
    Require all denied
</Directory>

私が理解しているように、マシンのすべてのディレクトリに適用されているデフォルトの厳格なセキュリティを削除することを意味します。他の誰かがあなたのC:\very\sensitive\informationディレクトリを指す構成を作成し、そこから Web サイトにコンテンツを提供する可能性があります (これは共有ホストで問題になる可能性が最も高い)。興味深いことに、次のコメントがそのブロックの上に作成されています。

# First, we configure the "default" to be a very restrictive set of 
# features.

次に、そのブロックの下に:

# Note that from this point forward you must specifically allow
# particular features to be enabled - so if something's not working as
# you might expect, make sure that you have specifically enabled it
# below.

すべてをロックダウンしてから、ディレクトリごとに条件付きでロックを解除することは完全に理にかなっています。

私は、すべての Web サイト (Apache 仮想ホストを介して提供される) が存在するマシン上の場所を指す次のことを思いつきました。これは、ブロックの直後に続き<Directory "d:/wamp/www/"></Directory>ます。

<Directory "d:/wamp/sites/">
    Options Indexes FollowSymLinks
    AllowOverride all
    Require all granted
</Directory>

次に、各仮想ホスト構成/エイリアス内で、そのディレクトリに適用される構成を設定できます。

アクセス制御構成の違い

最近のバージョンの Apache でのアクセス制御の構成が変更されました。

以前は:

Order allow,deny
Allow from all

次のようになります。

Require all granted

詳細情報: http://httpd.apache.org/docs/current/upgrading.html

于 2014-10-01T12:25:29.283 に答える
3

<Directory>タグは<VirtualHost *:80>

このような:

<VirtualHost *:80>
ServerName local.md9
ServerAlias local.md9
DocumentRoot "m:/Work/New MD9.ca/site/"
    <Directory "m:/Work/New MD9.ca/site/">
        Order Allow,Deny
        Allow from All
    </Directory>
</VirtualHost>

また、デフォルトの www フォルダーの外側では、allow の代わりに require を使用する必要があることに注意してください。

<Directory />
    AllowOverride none
    Require all denied
</Directory>
于 2012-12-09T15:57:58.397 に答える
1

上記の .conf 編集をすべて試してもうまくいかない場合は、次の追加手順を試してください。

1) DocumentRoot と <Directory>の場所が同じであることを確認してください。

2) <VirtualHost> タグ内の「ServerName」ドメインのスペルを再確認し、HOST ファイル (windows\system32\drivers\etc\hosts) でドメインのスペルが同じであることも確認します。

例:

<VirtualHost *:80>
    DocumentRoot "D:/vhost_directory/website_directory"
    ServerName mywebsite.local
    <Directory "D:/vhost_directory/website_directory">
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

3) conf ファイルの構文を確認します。

cd \wamp\bin\apache\apache2.4.9\bin
httpd -t

4) 出力が得られるまで conf ファイルのエラーを修正します。

Syntax OK

5) ドメイン名のキャッシュを更新します (コンソールを管理者として実行する必要があります)。

net stop dnscache
net start dnscache

6) Apache サービスを再起動するか、WAMP のすべてのサービスを再起動します

于 2015-01-26T13:35:42.127 に答える