我有一个问题,可以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
答案 0 :(得分:0)
除非在您的apache服务器上启用%3F
,否则无法重写/重定向encoded slashes
(编码斜杠)。要启用已编码的斜杠,请将以下指令添加到server.config
或virtual host
上下文中。
AllowEncodedSlashes On
从apache手册:
AllowEncodedSlashes
指令允许在路径信息中使用包含编码路径分隔符的URL(%2F用于/和另外%5C用于\在一致系统上)。
使用默认值Off,此类URL会被404 (Not found)
错误拒绝。
使用值On,接受此类URL,并像所有其他编码字符一样解码编码斜杠。
使用值NoDecode,可以接受此类URL,但编码的斜杠不会被解码,而是保留在其编码状态。
当与PATH_INFO
注意
如果路径信息中需要编码斜杠,强烈建议使用NoDecode作为安全措施。允许对斜杠进行解码可能会允许不安全的路径