如何在网址中传递%2f和%2b等编码字符?

时间:2015-04-29 16:12:49

标签: php apache .htaccess url mod-rewrite

我使用.htaccess文件通过URL传递加密值,如下所示: 网址:

http://www.website.com/folder1/f1/tdT9Eu%2b8kmAe1U%2ft12RS

htaccess文件:

RewriteRule ^f1/(.+)$  index.php?id=$1 [NE]

问题是服务器响应在此服务器上找不到请求的URL。但是,当我将%2f替换为/%2b b s+时,它的效果非常好,我可以看到该页面的内容。

当我使用url而没有任何重写时,它也很有效,如下所示:

http://www.website.com/folder1/index.php?id=tdT9Eu%2b8kmAe1U%2ft12RS

你能帮忙解决这个问题吗?如何修改我的htaccess以使其工作?因为我需要使用url重写来获取内容,如上所示

2 个答案:

答案 0 :(得分:1)

这是由于URI中存在%2f,默认情况下Apache Web服务器通常不允许这样做。在查询字符串中允许?id=...工作正常的原因。

为此,您需要在Apache配置中turn on AllowEncodedSlashes directive

使用:

AllowEncodedSlashes On

允许URI中的编码斜杠并重新启动Apache Web服务器。

答案 1 :(得分:0)

我想你会在这里找到你想要的答案:Htaccess RewriteRule to accept special characters

基本上,将其更改为RewriteRule ^f1/(^/.+)$ index.php?id=$1 [NE]