0

apache に origin.datingasia.co というドメイン名が提示された場合、VirtualHost エントリの下の両方に一致しますか?

<VirtualHost *:80>
    ServerName datingasia.co
    ServerAlias www.datingasia.co
    RewriteEngine on
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteRule ^(.*) http://www.%{HTTP_HOST}$1 [R=301,L]
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /var/www/html/datingasia.co
    ServerName origin.datingasia.co
    ServerAlias origin.datingasia.co
</VirtualHost>

また、ドメインに書き換えルールが適用されると、たとえば、「http://www.etc.etct」が追加された場合、自動的にリダイレクトされますか? これは、DocumentRoot パスが使用される前に発生しますか?

4

1 に答える 1

1

ドメイン「origin.datingasia.co」では、2 番目のエントリのみがトリガーされます。最初のパラメーターでもトリガーする場合は、2 つ目の ServerAlias パラメーターを追加する必要があります。

ServerAlias origin.datingasia.co

ただし、2 番目のエントリには同じ ServerAlias が含まれているため、これは問題を引き起こします。すべての ServerName/ServerAlias は一意である必要があります。そうしないと、Apache はリクエストに使用するブロックを認識できません。

最初のエントリは、「datingasia.co」と「www.datingasia.co」のリクエストのみをキャッチします。ただし、書き換えルールの条件が満たされない場合は、DocuemntRoot がありません (IE: www.datingasia.co)。これにより、リクエストが www.datingasia.co ページに到達すると、リクエストが失敗する原因になります。これは、Apache がどのルートからリクエストを処理するかを認識できないためです。「datingasia.co」にアクセスすると、ブラウザーは自動的に「www.datingasia.co」にリダイレクトされます。

2 番目のエントリでは、「ServerAlias origin.datingasia.co」は必要ありません。そのドメインは既に ServerName で定義されているためです。このホストを指す追加の一意のドメインが必要な場合は、ServerAlias 行のみが必要です (IE: ServerAlias www.origin.datingasia.co)。

書き換えルールはホストにあるため、条件が満たされた場合、Apache は DocumentRoot を必要としません。しかし、条件が満たされない場合、Apache はリクエストを処理しようとするため、結果として DocumentRoot が必要になります。このルールは「datingasia.co」を「www.datingasia.co」に転送しますが、「www.datingasia.co」では DocumentRoot がなく、RewriteCond を満たしていないため失敗します。

于 2013-01-09T00:57:48.467 に答える