對於問題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.jpg到http://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
並執行數據庫查找以查看重定向瀏覽器的位置。
感謝Jon Lin的建議。對於問題2,我的映射將存儲在數據庫中,所以我認爲我會利用重寫規則將id發送到腳本,然後從那裏重定向瀏覽器。再次感謝! – Jon