相对URL不能识别%2F

时间:2022-12-28 14:10:55

最近在一个项目中发现%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