Apache2 mod_rewrite 遇到 %20 和 加號混合的解法

PHP 的 urlencode 有兩種:

  • rawurlencode('c & c++'); // 20%26%20c%2B%2B
  • urlencode('c & c++'); // c+%26+c%2B%2B
  • 由上述看到主要差異在於空白(%20 vs +),+ 會被轉成 %2B

平常使用 urlencode() / rawurlencode() 在 Apache rewrite 轉回來都不會有問題,但是從其它程式語言來得,有遇到同時有 %20 和 +,但是這些在 Apache 端都會被轉成空白讓 PHP 吃,該怎麼避免 + 被轉成空白呢?

閱讀全文〈Apache2 mod_rewrite 遇到 %20 和 加號混合的解法〉