3

私は Windows 7 64 ビットを使用しており (これは重要ではないかもしれません)、xampp をインストールしています。私の htdocs/ ディレクトリには、複数のプロジェクトがあります。さて、そのうちの1つ(htdocs/test/としましょう)について、「example」と呼ばれるvhostを作成しました。そして、それは正常に動作します... dir /test/ 内に、次のコードを含む .htaccess ファイルがあります。

RewriteEngine on

RewriteBase /test
Options +FollowSymLinks
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)\.(js|gif|jpeg|jpg|png)$
RewriteRule . index.php

ここでは、すべてのトラフィックを自分のページにリダイレクトしたいと考えていindex.phpます。ここでは、インデックス ページから始まるプロジェクト全体にシステムを使用しているためです。でhttpd.conf、有効rewrite_moduleにして内部にも

<Directory "C:/Program Files/xampp/htdocs">

AllowOverrideディレクティブを に変更しましたAll

今、私が言ったように、作成された仮想ホスト「例」でプロジェクトにアクセスしようとすると、これは正常に機能します。しかし、htdocs ディレクトリ内の他のプロジェクトにアクセスしようとすると、Internal Server Error (HTTP 500) とログ ファイルに次のメッセージが表示されます。

[Thu Nov 15 11:07:12 2012] [error] [client 127.0.0.1] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.

また、URL127.0.0.1またはを入力localhostすると、「example」vhost で定義されたプロジェクトが取得されます...これはかなり混乱します。誰か助けてもらえますか?

4

1 に答える 1

0

ルートとサブディレクトリの htaccess ファイルが競合しているようです。[L]ルート htaccess ファイルからサブディレクトリの処理を除外し、 ast ルールディレクティブを必ず使用してください。

ルート HTACCESS - 「test」サブディレクトリを除外し、[L]ast ルール ディレクティブを使用します。

Options +FollowSymLinks

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)\.(js|gif|jpeg|jpg|png)$

# exclude the "test" subdirectory
RewriteCond %{REQUEST_URI} !^(test)/?

# add [L]
RewriteRule . index.php [L]

"Test" サブディレクトリ HTACCESS - [L]ast ルール ディレクティブを使用します。

RewriteEngine on
RewriteBase /test/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)\.(js|gif|jpeg|jpg|png)$

# add [L]
RewriteRule . index.php [L]
于 2013-12-30T19:37:39.847 に答える