我有一個帶有以下參數的網頁。htaccess url重寫(db訪問)?
http://www.somesite.com/community_details.php?comm_id=233®ion_id=2&city_id=40
我想改成了這個
http://www.somesite.com/virginia/fairfax/some_community/
如何調用數據庫返回的區域,城市,社區在.htaccess的URL重寫?
我有一個帶有以下參數的網頁。htaccess url重寫(db訪問)?
http://www.somesite.com/community_details.php?comm_id=233®ion_id=2&city_id=40
我想改成了這個
http://www.somesite.com/virginia/fairfax/some_community/
如何調用數據庫返回的區域,城市,社區在.htaccess的URL重寫?
這不是特別有效,但你可以使用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並不特別適合編寫守護進程,所以您可能希望以其他語言來執行此程序。
你不能。
你可以做的是有community_details.php
做數據庫查詢,然後調用die(header("Location: blahblahblah"));
。但是,那麼你必須使用.htaccess和其他一切來處理它,所以根本不會這麼做 - 取決於這些URL對你的重要性。
OK,但我怎麼寫我的.htaccess接受參數來查看正確page..so它理解233的2 some_community REGION_ID是弗吉尼亞州和40等於費爾法克斯 –
我想;你不能
如果您的鏈接是http://www.somesite.com/virginia/fairfax/some_community/
你可以用htacces更改爲http://www.somesite.com/community_details.php?comm_code=samo_community®ion_code=virginia&city_code=fairfax
,並採取規範的ID從數據庫在PHP中使用。
閱讀,這是一個良好的開端: http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritemap
你創建你的模式正則表達式,然後寫一個外部的Perl/PHP腳本的任何一個實現針對MySQL表哈希查找並返回到Apache。
好吧,這很容易。
只是將所有虛擬請求路由到php scritp,它將查詢數據庫。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?request=$1 [QSA,L]
並且您將在$ _GET ['request']中請求路徑。
使用爆炸分解並從數據庫中獲取您的參數。
,幾乎不會將DB值返回到.htaccess「用於URL重寫」,右 – eis
馬克city_id,我這樣做 RewriteEngine敘述在 RewriteBase/ Options + FollowSymLinks RewriteMap examplemap txt:/ var/www/html/mysite/key_pair。txt RewriteRule community_details.php?(。*)$ {examplemap:$ 1} 現在我找不到頁面。 這是鑰匙對文本的樣本 252格魯吉亞/肯尼索/登陸肯尼索山 –
對不起,不是頁面未找到它是這樣的。 內部服務器錯誤 服務器遇到內部錯誤或配置錯誤,無法完成您的請求。 –
500內部服務器錯誤獲取記錄在服務器錯誤日誌中的說明性原因。獲得一個rewritemap的工作很棘手,你可能需要一段時間來玩。 –