apache使用.htaccess文件中RewriteRule重定向后,URL中的加号无法解析

今天在使用.htaccess做伪静态的时候,发生一件怪事,URL里存在C++时会有问题,在处理C++这个词的时候,无论如何,$_GET都得不到++,只能得到C空格.

一开始我以为是没用urlencode处理,后来发现确确实实处理了,后台经过排查,确定是rewrite的问题,因为在单文件的环境是可以得到C++这个词的,当然,是经过了urlencode的.

原因:rewrite得不到c++这个词,是因为APACHE在得到参数后,自行做了urldecode处理,导致无法得到C++中的加号部分

决方案目前只看到了一种,在PHP的官网上也有记载,在处理c++时,进行两次urlencode处理,即urlencode(urlencode(‘C++‘)),这样再rewrite的时候,就可以得到C++这个词了.

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

原文地址:https://www.cnblogs.com/cutchaos/p/9520232.html

时间: 2024-11-11 03:43:22

apache使用.htaccess文件中RewriteRule重定向后,URL中的加号无法解析的相关文章

ThinkPHP 利用.htaccess文件的 Rewrite 规则隐藏URL中的 index.php

去掉 URL 中的 index.php ThinkPHP 作为 PHP 框架,是单一入口的,那么其原始的 URL 便不是那么友好.但 ThinkPHP 提供了各种机制来定制需要的 URL 格式,配合 Apache .htaccess 文件,更是可以定制出人性化的更利于 SEO 的 URL 地址来. .htaccess文件是 Apache 服务器中的一个配置文件,它负责相关目录下的网页配置.我们可以利用 .htaccess 文件的 Rewrite 规则来隐藏掉 ThinkPHP URL 中的 in

apache的.htaccess文件作用和相关配置

首先.htaccess什么? .htaccess是一个纯文本文件,它里面存放着Apache服务器配置相关的指令. 当我们使用apache部署一个网站代码准备部署到网上的时候,我们手中的apache的httpd.conf大家肯定都知道.这是apache的配置文件,然而我们大多数的网站都是基于云服务器来部署的,还有就是团队协作开发的时候,我们很难直接修改公共的httpd.conf,这时 .htaccess就是httpd.conf的衍生品,它起着和httpd.conf相同的作用. .htaccess的

取消apache对.htaccess文件的限制

问题 当访问一个站点的时候,报告“500 Internal Server Error”,查看/var/log/httpd/error_log,报告“/www/users/test.com/.htaccess: Options not allowed here”,或者报告“ErrorDocument not allowed here”等信息. 解决方案 这是由于客户在自己的网站的目录内放置了.htaccess文件.使用.htaccess文件,可以对网站目录的一些特性做子定义,如调整默认首页顺序.设

mac下为Apache 创建 .htaccess文件

在设置固定链接时会提示如下的问题: 若您的 .htaccess 文件可写,我们可以自动修改它.但似乎它不可写,因此我们在下方列出了您 .htaccess 文件中应该加入的URL 重写规则.点击下方的文本区域,按 CTRL+ a 来全选. 需要将下面的代码写入 .htaccess文件 <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /wordpress/ RewriteRule ^index\.php$ - [L] RewriteCon

thinkphp中redirect重定向后隐藏index.php

首先,.htaccess文件要配置好隐藏index.php.系统默认生成的就行. 然后,也是最关键的一部,要在Application/Home/Conf里的config.php文件中增加如下配置: <?php return array( //'配置项'=>'配置值' 'URL_MODEL' => '2' ); 这样就好了.

apache使用.htaccess文件实现屏蔽wget下载网站内容

经发现,虽然wget遵循 robots.txt 规则,但是那个还是可以绕过去,现在56云小编把我自己使用的屏蔽方法分享给大家: 屏蔽下载任何文件 .htaccess SetEnvIfNoCase User-Agent "^wget" bad_bot <Limit GET POST> Order Allow,Deny Allow from all Deny from env=bad_bot </Limit> 屏蔽下载部分文件 .htaccess SetEnvIfN

使用curl获取Location:重定向后url

在php获取http头部信息上,php有个自带的函数get_headers(),我以前也是用这个的,听说效率在win上不咋地,再加上最近研究百度url无果,写了cURL获取重定向url的php代码来折腾.以前我是用get_headers来获取跳转后的url get_headers的代码 1 2 3 4 5 6 7 8 9 10 11 //curl的百度百科 $url = 'http://www.baidu.com/link?url=77I2GJqjJ4zBBpC8yDF8xDhiqDSn1JZj

JDBC中在配置数据源url中部分参数解析

url: jdbc:mysql://localhost:3306/mydb?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false 1. serverTimezone 关于时区的设置 常见问题:从数据库返回的时间比真正保存的时间提前8小时. 解决:将 serverTimezone=UTC  改为 serverTimez

Android中访问网络时url中带有特殊字符的问题

Component Example value Also known as Protocol http scheme Authority username:[email protected]:8080   User Info username:password   Host host   Port 8080   File /directory/file?query   Path /directory/file   Query query   Ref ref fragment 一个完整的url链接