[英]Need to pass backslashes in query string with pretty urls
我正在嘗試將反斜杠作為查詢字符串參數的一部分傳遞。
該項目使用一個非常簡單的url_rewriting
方法:
//.Htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php?arguments=$0 [NC,L]
然后接收$_GET['arguments']
,其值由/分隔
例如: blog / post / 2 /將用以下內容填充$_GET['arguments']
: 'post / 2 /'
問題是,當我嘗試傳遞類似test%5Cabc (為test \\ abc編碼的URL)之類的內容時,請求將返回404錯誤,而不是將其作為參數傳遞
我不知道如何解決它。 提前致謝。
出現404錯誤的原因是,默認情況下,Apache關閉了AllowEncodedSlashes ,並且其行為是對包含反斜杠的任何請求進行404處理。 這是因為將其打開可能會導致安全隱患 。 在Apache 2.2.18及更高版本中,有一個NoDecode設置,它使此設置更安全,並適合您的情況。
無論如何,我嘗試在本地打開它,實際上是以下腳本:
<?php var_dump($_REQUEST); ?>
能夠處理類似
http://localhost/this\is\a\test
和輸出
array(1) { ["arguments"]=> string(14) "this\is\a\test" }
但是,它(或我的瀏覽器)似乎在編碼反斜杠方面存在問題,將其轉換為常規反斜杠-也許這不是問題。 如果在重寫器上啟用了B標志,它將把未編碼的反斜杠轉換為編碼的反斜杠。
我希望我做對了,嘗試使用此方法:
'/file.php?id=$value'//this utilise that backslash and then pass the id to the `$_Get[]` Function somewhere in the file.php.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.