0

最近、サイトを https に移行するためにワイルドカード SSL 証明書を購入しました。Apache は複数の仮想ホストを、同じ IP の下で別々の s で処理できないため、mod_vhost_alias から VirtualDocumentRoot を使用することを余儀なくされました。これにより、最初は Apache とワイルドカード証明書に関する問題が解決されましたが、長くは続きませんでした。

やむを得ず、サイトのホームページをドメインのルート (つまり、http://www.domain.comではなくhttp://domain.com ) に移動することにしました。移動すると、https に移動するために確立したルールによってサーバー上で無限ループが発生し、エラー 500 が発生します。サブドメインに適用された同じルールが引き続き機能し、http が https に書き換えられることに注意してください。

エラー:

Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary.

私のVirtualHost構成:

<VirtualHost IP:443>
   ...
   VirtualDocumentRoot /.../public_html/%1/
   ...
   VirtualScriptAlias /.../public_html/%1/cgi-bin/
   ...
</VirtualHost>

私の .htaccess 設定:

SetEnv APPLICATION_ENV development
Options +FollowSymlinks -Indexes
RewriteEngine On

RewriteCond %{HTTP_HOST} ^www.domain.com [NC,OR]
RewriteCond %{HTTP_HOST} ^domain.com [NC]
RewriteCond %{SERVER_PORT} !443
RewriteRule ^(.*)$ https://domain.com/$1 [L,R=301]

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ - [NC,L]
RewriteRule ^(.*)$ index.php [NC,L]

<FilesMatch "\\.(js|css)$">
SetOutputFilter DEFLATE
</FilesMatch>

私のアプリケーションは、Zend Framework を使用して構築されました。

ここでの主な謎は、なぜどのサブドメインでも機能するのに、ルート サブドメインを使用しているときには機能しないのかということです。問題の原因となっている可能性のあるヒントはありますか? .htacess のすべての書き換えを確認する方法はありますか?

4

1 に答える 1

0

これを試して:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ [NC]
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}/$1 [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-s
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php [L]

変更点:

  • www.domain.comdomain.comは 1 行で一致する可能性があります。
  • HTTPSの代わりにチェックSERVER_PORT
  • 要求されたのと同じドメイン名で HTTPT にリダイレクトします (すべてを 1 つの名前に向けたい場合は変更します)。
  • 書き換えを「殺す」ルールを作成する代わりに、3 つの RewriteCond を OR で使用して、問題の実際のルールに適用する条件を無効にしました。
  • NCマッチング時にフラグを設定する意味はありません.*

残りの部分は.htaccess同じままにする必要があります (これらの部分は含まれていません)。

于 2012-06-26T11:58:17.343 に答える