NO IMAGE

最近在一個專案中發現%2F的相對URL識別了,產生了404錯誤。

URL:http://w3schools.com/xxx%2Fxxx%2Ftest.asp?name=stale&car=saab

產生這個現象的原因是因為apache沒有識別到encode後的URL。

可以在配置檔案裡面追加AllowEncodedSlashes On來解決。

<VirtualHost *:80>
        DocumentRoot “/var/www/weble.org/app/webroot”
        ServerName weble.org
        AllowEncodedSlashes On
        <Directory “/var/www/weble.org/app/webroot”>
                order deny,allow
                allow from All
        </Directory>
</VirtualHost>

還有一種解決辦法就是在問題的畫面,呼叫JS的decodeURIComponent方法。

Encode and decode a URI:

<script type=”text/javascript”>

var uri=”http://w3schools.com/my test.asp?name=ståle&car=saab”;
var uri_encode=encodeURIComponent(uri);
document.write(uri_encode);
document.write(“<br />”);
document.write(decodeURIComponent(uri_encode));

</script>

The output of the code above will be:

http%3A%2F%2Fw3schools.com%2Fmy%20test.asp%3Fname%3Dst%C3%A5le%26car%3Dsaab
http://w3schools.com/my test.asp?name=stale&car=saab