我们有 ?在url和ajp中将其转换为%3F

时间:2010-09-16 22:30:09

标签: apache character-encoding ajp

使用Mod_jk连接器,我们在/ etc / apache2 / sites-available文件中有这个:

RewriteRule /$ /op_ugw/orderportal/home?switchprofile=RecyledPlants [L] 这很好用。和www.recycledplants.com将带您到正确的地方。

然而,在Ubuntu 10.04服务器上,我们设置了ajp而不是mod_jk。所以我们有

ProxyPass / ajp://10.1.1.1:8009 / op_ugw / orderportal / home?switchprofile = RecyledPlants ProxyPassReverse / ajp://10.1.1.1:8009 / op_ugw / orderportal / home?switchprofile = RecyledPlants

当我尝试使用recycledplants.randrinc.com(测试网址)时出现404错误并

描述:请求的资源(/ op_ugw / orderportal / home%3Fswitchprofile = RecyledPlants)不可用。

?已转换为%3F。

有没有办法阻止Apache转换?到%3F。

希望这是有道理的。 谢谢 安

2 个答案:

答案 0 :(得分:0)

在Java Ranch上得到了一些指示,并且能够弄清楚如何。这是我做的: 好的,这是有效的:

/ etc / apache2 / sites-available文件没有parms / redirect(只是文件的顶部): NameVirtualHost 10.1.1.1:80

ServerAdmin webmaster@localhost

     ServerName ugw.randrinc.com

    DocumentRoot /var/www/ugw/

    ProxyPreserveHost On

    ProxyPass / ajp://10.1.1.1:8009/op_ugw/orderportal/home
    ProxyPassReverse / ajp://10.1.1.1:8009/op_ugw/orderportal/home

    <Proxy *>
      Order deny,allow
      Allow from all
    </Proxy>

<Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
   etc...etc... etc..

ServerName ugw.randrinc.com DocumentRoot /var/www/ugw/ ProxyPreserveHost On ProxyPass / ajp://10.1.1.1:8009/op_ugw/orderportal/home ProxyPassReverse / ajp://10.1.1.1:8009/op_ugw/orderportal/home <Proxy *> Order deny,allow Allow from all </Proxy> <Directory /> Options FollowSymLinks AllowOverride None </Directory> etc...etc... etc.. 这是你需要重定向时的样子,在我的情况下,我正在传递parms并且应用程序执行重定向:

NameVirtualHost 10.1.1.1:80

ServerAdmin webmaster@localhost

    ServerName recycledplants.randrinc.com

    DocumentRoot /var/www/recycledplants/

    ProxyPreserveHost On

    ProxyPass / ajp://10.1.1.1:8009
    ProxyPassReverse / ajp://10.1.1.1:8009

    <Proxy *>
      Order deny,allow
      Allow from all
      RewriteEngine On
      RewriteRule \/$ /op_ugw/orderportal/home?switchprofile=RecyledPlants [L]
    </Proxy>
<Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
  etc....etc....etc
希望这有助于某人。此外,我在亚马逊云服务器上运行Ubuntu 10.04。 格式化有点麻烦,但我认为你可以阅读。 安

答案 1 :(得分:0)

如果我理解你的问题:在RewriteRule的末尾添加“NE”

此标志阻止mod_rewrite将通常的URI转义规则应用于重写结果。通常,特殊字符(例如'%','$',';'等)将被转义为它们的十六进制等价物(分别为'%25','%24'和'%3B');这个标志可以防止这种情况发生。

RewriteRule \/$ /op_ugw/orderportal/home?switchprofile=RecyledPlants [L,NE] 

您可以在apache mod_rewrite文档中详细了解其工作原理:http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html