小编use*_*479的帖子

Apache mod_rewrite%2B和加号(+)符号

我正在使用apache/mod_rewrite重写URL,但我遇到加号问题.

使用以下规则..

RewriteRule ^/(.+[^/])/?$ http://localhost:8080/app/home?tag=$1 [P,L] 
Run Code Online (Sandbox Code Playgroud)

都:

http://localhost/1+1 and http://localhost/1%2B2
Run Code Online (Sandbox Code Playgroud)

最终成为

uri=http://localhost:8080/app/home, args=tag=1+2
Run Code Online (Sandbox Code Playgroud)

因此,在这两种情况下,应用程序都会将加号转换为空格,因此无法区分空格和加号.

如果我使用"B"标志,那么在两种情况下,+符号都会转换为%2B,并且应用程序最终会出现相同的问题,但会反转(空格和加号都是加号)

有没有办法让apache正确地将%2B转换为加号而不是空格?

我读了一些关于mod_security的内容,但我没有使用它,所以我不确定是否还有其他安全机制导致这种情况?

任何帮助将不胜感激!

apache mod-rewrite

6
推荐指数
1
解决办法
5455
查看次数

Apache/mod_rewrite> Tomcat编码%26和"&"

Apache是​​我的Web应用程序的前端,然后我使用mod_rewrite将请求代理到J​​Boss.到目前为止,这听起来很标准,但我遇到的问题是:如果我通过jboss @直接访问应用程序http://localhost:8080/app/page?raw=foo%26bar&page=1:

request.getParameter("raw") = foo&bar
Run Code Online (Sandbox Code Playgroud)

如果我通过Apache @访问该应用程序 http://localhost/foo%26bar&page=1

request.getParameter("raw") = foo
Run Code Online (Sandbox Code Playgroud)

所以在这个过程中的某个地方,它%26会丢失并被替换为一个&用于切换原始变量的东西.

这是我的Apache重写规则.

RewriteRule ^/(.*) \
    http://localhost:8080/app/home?raw=$1 [L,P]
Run Code Online (Sandbox Code Playgroud)

Apache访问日志显示: http://localhost/foo%26bar&page=1

重写日志显示: http://localhost:8080/app/home?raw=foo&bar&page=1

但我希望请求是: http://localhost:8080/app/home?raw=foo%26bar&page=1

我很确定这也会出现斜杠/,对我来说这是某种编码问题.有没有办法代理URL未触动?似乎无法想出这个.

编辑:

首先我要说的是感谢Gumbo给我一些非常好的建议!基于这些建议,我已经简化了我的Apache配置以进行测试.

这就是它的样子:

ServerRoot "C:/apps/xampplite/apache"
Listen 80

LoadModule rewrite_module modules/mod_rewrite.so
LoadModule log_config_module modules/mod_log_config.so

ServerAdmin postmaster@localhost
ServerName localhost:80
DocumentRoot "C:/apps/xampplite/htdocs"
ErrorLog "logs/error.log"
LogLevel debug
DefaultType text/plain

<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common …
Run Code Online (Sandbox Code Playgroud)

java apache mod-rewrite jboss

5
推荐指数
1
解决办法
2025
查看次数

标签 统计

apache ×2

mod-rewrite ×2

java ×1

jboss ×1