2010-12-14 67 views
3

文件路徑時,執行主目錄擴展:/Users/user_name/Sites/example.com如何使mod_rewrite的*不*使用的.htaccess

瀏覽的爲: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

那麼我該怎麼做呢?

我運行在Mac OS X

編輯 AllowOverride的Apache/2.2.15(Unix的)設置爲All爲用戶Sites目錄。如果不是重寫不應該工作。

+0

我正面臨類似的問題。你碰巧找到解決這個問題的任何機會? – 2012-02-27 16:55:53

+0

不,我沒有=/ – anddoutoi 2012-02-28 13:16:18

+0

@SaurabhNanda和OP,檢查我的答案。希望它可以幫助你,或者至少是別人。 – 2012-05-31 20:06:53

回答

-1

允許覆蓋您的主目錄配置文件。

+0

是的。 (15個字符) – anddoutoi 2010-12-14 13:21:44

+0

這是一個不正確的答案。允許覆蓋也不能解決它。 – 2012-02-28 14:15:29

1

我花了半天時間絞盡腦汁,唯一能找到的解決方案是創建一個新的VirtualHost,將DocumentRoot設置爲用戶的主目錄。

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/ 

UPDATE

此方法適用於一些,但它似乎使重寫引擎兩次扳機......一旦內部重定向,然後再次。我最終使用了像其他提交者一樣的VirtualHost。