apache使用.htaccess文件中RewriteRule重定向后,UPAJEROL中的加号不可能解析

今天在使用.htaccess做伪静态的时候,发生一件怪事,U奥迪Q3L里存在C++时会不日常,在处理C++这一个词的时候,无论怎样,$_manbetx手机网页版,GET都得不到++,只好得到C空格.

在apache的配置文件中:

一早先自身认为是没用urlencode处理,后来发觉真正处理了,后台经过排查,鲜明是rewrite的标题,因为在单文件的环境是能够赢得C++这些词的,当然,是透过了urlencode的.

<VirtualHost *:80>
    ServerName tp5.com
    DocumentRoot d:/wamp/www/tp5.com/public
    <Directory  "d:/wamp/www/tp5.com/public/">
        Options Indexes FollowSymLinks MultiViews(是否允许浏览目录下的列表)
        AllowOverride All/None("允许/禁止"使用.htaccess文件)
        Require local
    </Directory>
</VirtualHost>

原因:rewrite得不到c++这些词,是因为APACHE在收获参数后,自行做了urldecode处理,导致力不从心取得C++中的加号部分

以上配置与重定向功用毫无干系,apache是不是打开重定向效率首倘若看:

 

#LoadModule rewrite_module modules/mod_rewrite.so

决方案如今只看到了一种,在PHP的官网上也有记载,在拍卖c++时,举办四遍urlencode处理,即urlencode(urlencode(‘C++’)),那样再rewrite的时候,就足以博得C++那么些词了.

假诺没有打开重定向效能,.htaccess文件也是能够用的,像这么的始末:

屈居PHP.NET上的具体地址 http://www.php.net/urlencode

deny from all

manbetx手机网页版 1

会禁止从浏览器访问当时目录下的有所文件,可是力不从心利用重定向效率.

 

假诺打开重定向作用:

LoadModule rewrite_module modules/mod_rewrite.so

.htaccess文书档案的剧情能够参照tp5的重定向写法,如下:

<IfModule mod_rewrite.c>
  Options +FollowSymlinks -Multiviews
  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ aaa.php/$1 [QSA,PT,L](把括号里的内容替换成$1的内容,这句会默认把所有的网址前加上aaa.php)
</IfModule>

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图