3

ファイルパス:/Users/user_name/Sites/example.com

閲覧可能:http://localhost/~user_name/example.com/

子ディレクトリ(chrome)で、.htaccess次のようになりました。

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^rgba\((\d{1,3}%?,\s?\d{1,3}%?,\s?\d{1,3}%?,\s?[0-1]?\.?\d+)\)$ rgba.php?rgba=$1 [PT]

これは、次のようなリクエストに一致します。

http://localhost/~user_name/example.com/chrome/rgba(255,255,255,0.5)

リクエストを次のように書き直す必要があります。

http://localhost/~user_name/example.com/chrome/rgba.php?rgba=(255,255,255,0.5)

rgba.phpをchromeディレクトリに配置しました。それでも私はこのエラーメッセージを受け取ります:

The requested URL /Users/user_name/Sites/example.com/chrome/rgba.php was not found on this server.

マニュアルのホームディレクトリ拡張と[PT]フラグの部分を読みましたが、違いはありません。

example.comディレクトリを指す仮想ホストを設定すると、機能します。両方の方法で機能させたい=P

では、どうすればよいですか?

MacOSXでApache/2.2.15(Unix)を実行しています

ユーザーディレクトリに対してEDITAllowOverrideが設定されています。それがなかったら、書き直しはまったく機能しなかったはずです。AllSites

4

3 に答える 3

1

私は半日かけてこれに頭を悩ませましたが、見つけた唯一の解決策は、DocumentRootをユーザーのホームディレクトリに設定して新しいVirtualHostを作成することでした。

于 2012-02-28T14:16:11.543 に答える
1

悔しかった聖神。しかし、私はそれを機能させています。

いろいろ試してみました。RewriteRuleの PT フラグで修正されると思いましたが、違います。

ホームディレクトリの展開を停止する方法はまだわかりませんが、回避策を見つけました。の直前に、RewriteRuleを使用しますRewriteBase /~user_name/example.com/chrome/。これは、書き換えのプレフィックス (私の構成からのログ エントリ) をオーバーライドします。

<SNIP> (2) [perdir /Users/colin/Sites/ajaxtest/] trying to replace prefix /Users/colin/Sites/ajaxtest/ with /~colin/ajaxtest/

アップデート

このソリューションはある程度機能しますが、書き換えエンジンを 2 回トリガーするように見えます... 1 回は内部リダイレクト用で、もう 1 回はその後です。他の提出者と同じように VirtualHost を使用することになりました。

于 2012-05-31T20:05:01.077 に答える
-1

ホーム ディレクトリの構成ファイルでオーバーライドを許可します。

于 2010-12-14T13:13:05.263 に答える