2011-10-31 95 views

回答

1

這不是特別有效,但你可以使用RewriteMap來使用外部txt/dbm /程序讓mod_rewrite根據結果進行查找和重寫。

RewriteMap pretty-community prg:/path/to/some/shell/script 

RewriteRule community_details.php?(.*) ${pretty-community:$1} 

從community_details.php劇本拍攝的查詢字符串將被傳遞到指定的外部腳本它的標準輸入,和腳本通過標準輸出的重寫URL回覆。

請注意,腳本在Apache首次啓動時開始ONCE,然後本質上運行在守護進程模式下,每次執行重寫都與Apache通信。由於PHP並不特別適合編寫守護進程,所以您可能希望以其他語言來執行此程序。

+0

馬克city_id,我這樣做 RewriteEngine敘述在 RewriteBase/ Options + FollowSymLinks RewriteMap examplemap txt:/ var/www/html/mysite/key_pair。txt RewriteRule community_details.php?(。*)$ {examplemap:$ 1} 現在我找不到頁面。 這是鑰匙對文本的樣本 252格魯吉亞/肯尼索/登陸肯尼索山 –

+0

對不起,不是頁面未找到它是這樣的。 內部服務器錯誤 服務器遇到內部錯誤或配置錯誤,無法完成您的請求。 –

+0

500內部服務器錯誤獲取記錄在服務器錯誤日誌中的說明性原因。獲得一個rewritemap的工作很棘手,你可能需要一段時間來玩。 –

-1

你不能。

你可以做的是有community_details.php做數據庫查詢,然後調用die(header("Location: blahblahblah"));。但是,那麼你必須使用.htaccess和其他一切來處理它,所以根本不會這麼做 - 取決於這些URL對你的重要性。

+0

OK,但我怎麼寫我的.htaccess接受參數來查看正確page..so它理解233的2 some_community REGION_ID是弗吉尼亞州和40等於費爾法克斯 –

0

好吧,這很容易。
只是將所有虛擬請求路由到php scritp,它將查詢數據庫。

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?request=$1 [QSA,L] 

並且您將在$ _GET ['request']中請求路徑。

使用爆炸分解並從數據庫中獲取您的參數。

+0

,幾乎不會將DB值返回到.htaccess「用於URL重寫」,右 – eis