2011-08-30 53 views
2

我即將嘗試編寫照片共享腳本和將數字轉換爲描述性名稱的腳本/重寫。我對如何去做這件事有一個模糊的想法,所以我一直在尋找一些一般的評論/指導。關於URL重寫和構建的指導

問題1:我需要一個存儲在我的根目錄之上的照片的URL源。我計劃將照片名稱(存儲在我的數據庫中)作爲查詢字符串附加到我的網址,例如:www.mywebsite.com/getphoto.php?12_3.jpg,然後編寫一個php腳本(getphoto.php)這取決於'?'之後的部分並從根目錄獲取該照片。

這是否有意義並且會有任何事情要考慮?

問題2:我想將我網址末尾的數字轉換爲描述性名稱(即在facebook.com/4中輸入顯示facebook.com/zuck)。我不確定最好的方式去做這件事,並希望得到一些指導,朝着正確的方向前進。

謝謝!

回答

4

對於問題1:一個簡單的重寫可以處理,你需要使用[QSA]標誌。事情是這樣的:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} ^.*\.(jpeg|jpg|gif|png|bmp)$ 
RewriteRule ^(.+)$ /getphoto.php?photo=$1 [L,QSA] 

這將改寫場景的URL http://mywebsite.com/12_3.jpghttp://mywebsite.com/getphoto.php?photo=12_3.jpg注意,第三重寫條件希望URI與圖像擴展結束之後,則可能不需要它。

對於問題2,它取決於「4」如何映射到「zuck」。如果您打算將它們硬編碼到你的Apache配置,你可以使用的RewriteCond:

RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/4$ 
RewriteRule ^.*$ /zuck [L] 
RewriteCond %{REQUEST_URI} ^/5$ 
RewriteRule ^.*$ /mark [L] 

等(或更換[L][R,L]重定向,而不是重寫,或者只是使用Redirect

Redirect /4 /zuck 
Redirect /5 /mark 

如果映射存儲在數據庫中,您需要動態地執行此操作,或許作爲php腳本執行重定向,利用與問題1類似的操作。重寫規則將重寫爲/redirect.php?id=$1之類的內容,並且您的redirect.php腳本將採用id並執行數據庫查找以查看重定向瀏覽器的位置。

+0

感謝Jon Lin的建議。對於問題2,我的映射將存儲在數據庫中,所以我認爲我會利用重寫規則將id發送到腳本,然後從那裏重定向瀏覽器。再次感謝! – Jon