我在.htaccess重寫規則的.htaccess URL編碼字符串不傳遞到頁面正確
RewriteRule ^page/(.*)$ my-php-page.php?cid=$1
我傳遞包含了像=
和+
字符的編碼字符串 - 這是編碼字符串;
V1ihnKpip6WpnY7Wm5zn2+6YUtLf2KCh4eKY
當完整的URL是
http://www.example.com/my-php-page.php?cid=V1ihnKpip6WpnY7Wm5zn2+6YUtLf2KCh4eKY
現在,這並不因爲+
標誌的工作。所以我想發送urlencoded的cid
,然後變成;
http://www.example.com/my-php-page.php?cid=V1ihnKpip6WpnY7Wm5zn2%2B6YUtLf2KCh4eKY
的+
跡象變得%2B
。這很好用,除非我在.htaccess中通過RewriteRule嘗試這種方式 - 它不起作用。因此,URL將
http://www.example.com/page/V1ihnKpip6WpnY7Wm5zn2%2B6YUtLf2KCh4eKY
的mypage.php文件實際收到cid
爲V1ihnKpip6WpnY7Wm5zn2 6YUtLf2KCh4eKY
因爲某些原因需要用一個空格代替%2B
。
任何想法,爲什麼它可能會這樣做?我該如何解決這個問題。非常感謝您的幫助。
編輯
我剛剛發現這個解決方案 - PHP $_GET var with urlencode and "&" bug - 但我不知道是否有在.htaccess
一個更優雅的解決方案不必urlencode
字符串兩次?
您的重寫規則以'page'開頭,但您的URL以'some-page /'開頭 – undone
不,它不是,前2個URL示例直接鏈接到PHP文件,它不使用重寫。我重寫了這個問題,因爲我的示例URL有點混亂。 – Wasim