Apache ModRewrite完整网址

时间:2018-02-06 17:27:35

标签: apache mod-rewrite

我有一个问题,可以mod-rewrite重写完整的URL参数吗?

http://example.com/go/something/after/go - 工作正常。

http://example.com/go/http%3A%2F%2Ftarget.com%2Fpage%3Fid%3D8900 - 回复404错误

/ go文件夹中的当前.htaccess规则:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule (.*) /go/go.php

1 个答案:

答案 0 :(得分:0)

除非在您的apache服务器上启用%3F,否则无法重写/重定向encoded slashes(编码斜杠)。要启用已编码的斜杠,请将以下指令添加到server.configvirtual host上下文中。

AllowEncodedSlashes On

从apache手册:

AllowEncodedSlashes指令允许在路径信息中使用包含编码路径分隔符的URL(%2F用于/和另外%5C用于\在一致系统上)。 使用默认值Off,此类URL会被404 (Not found)错误拒绝。 使用值On,接受此类URL,并像所有其他编码字符一样解码编码斜杠。 使用值NoDecode,可以接受此类URL,但编码的斜杠不会被解码,而是保留在其编码状态。 当与PATH_INFO

一起使用时,启用AllowEncodedSlashes功能非常有用

注意

如果路径信息中需要编码斜杠,强烈建议使用NoDecode作为安全措施。允许对斜杠进行解码可能会允许不安全的路径