簡體   English   中英

需要在帶有漂亮網址的查詢字符串中傳遞反斜杠

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM