国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > Apache > 正文

Apache服務器的RewriteMap

2024-08-27 18:25:50
字體:
來源:轉載
供稿:網友

在apache的環境下,rewrite還真是生活之友啊,時不時就得用上。前些日子有個需求,要將url重新轉一轉。

什么情況?

原來的url
http://www.xxx.com/demo/oldpage.php?param1=1&param2=2

轉換后的url
http://www.xxx.com/newpage.php?url=%2Fdemo%2Fmypage.php%3Fparam1%3D1&param2%3D2

需要把粗體部分的url進行urlencode,能看出上面的字符"?&="都分別轉義過,作為參數發給另外一個url。那么這時候請出rewrite還真是最合適不過了。

坎坷的Rewrite經歷

查查rewrite手冊,俺這才知道,轉義這活,非得派出RewriteMap的map function才能做的比較漂亮。現在只有四個內部map function可供差遣:

  • toupper: Converts the key to all upper case.
  • tolower:
  • Converts the key to all lower case.
  • escape: Translates special characters in the key to hex-encodings.
  • unescape: Translates hex-encodings in the key back to special characters.

那么很快就有了第一個rewrite出現:

RewriteMap escape int:escape
RewriteRule ^/([^/]*)$ /newpage.php?mi_url_suffix=${escape:$1?%{QUERY_STRING}} [L,PT]

注:這里的int不是intger的意思,它是internal的縮寫,表示調用內部函數。

看上去非常簡單,跑起來貌似也正....常?且慢,俺打開RewriteLog一瞅,形式不容樂觀啊,"&"字符通通沒有轉義。看來是失敗了,爬到狗狗上翻了一下,貌似escape對"?="之類的特殊字符是不做轉義的,暈。

RewriteMap到底

接著細看apache的rewrite手冊,發現RewriteMap還支持自定義腳本,那么還得使出俺的看家絕技——php了。首先弄一個能轉義的php,必須非常簡單,復雜了apache容易掛掉,寫出來發現想復雜都挺難啊:

/usr/local/bin/escape.php

PHP:
  1. #!/usr/bin/php -f
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 漳州市| 武威市| 会昌县| 浦北县| 新津县| 深圳市| 建始县| 沧州市| 九寨沟县| 潼关县| 长沙市| 天等县| 台南县| 德昌县| 合川市| 广汉市| 扶沟县| 察隅县| 星座| 成安县| 开平市| 长兴县| 墨玉县| 黎川县| 龙泉市| 渭源县| 保靖县| 永登县| 锡林郭勒盟| 东安县| 宜兰市| 茶陵县| 保靖县| 罗平县| 息烽县| 浮山县| 丹巴县| 安阳县| 闽侯县| 大姚县| 大洼县|