如何在apache重写中从url结尾删除%

如何在apache重写中从url结尾删除%,apache,mod-rewrite,url-rewriting,Apache,Mod Rewrite,Url Rewriting,我注意到请求的URL增加了,末尾有一个%。 例如,http://sample.com/countries/usa% 我们有一个Apache重写规则,用于将格式正确的请求转换为服务器上所需的页面 RewriteRule ^countries/([a-zA-Z]+)$ /index.php?c=$2 但是,当用户(或机器人?)在末尾添加%符号时,将强制执行400错误。 谷歌的网站管理员工具发现这些类型的错误越来越多,我不知道如何删除它。我无法在PHP中执行此操作,因为错误发生在Apache级别 非

我注意到请求的URL增加了,末尾有一个
%

例如,
http://sample.com/countries/usa%

我们有一个Apache重写规则,用于将格式正确的请求转换为服务器上所需的页面

RewriteRule ^countries/([a-zA-Z]+)$ /index.php?c=$2
但是,当用户(或机器人?)在末尾添加
%
符号时,将强制执行
400
错误。 谷歌的网站管理员工具发现这些类型的错误越来越多,我不知道如何删除它。我无法在PHP中执行此操作,因为错误发生在Apache级别


非常感谢您的帮助。

我想在您的.htaccess文件开头添加如下内容:

RewriteRule ^(.*)\%$ $1 [R=301,L]

这将导致永久重定向(因为R=301)到不带“%”的页面。

谢谢您的建议。这对我不起作用。把它放在序列中的哪个位置重要吗?我不是apache专家,但重写后使用了L,这不是告诉它停止寻找更多规则吗?@user2431427你应该把它作为第一条规则。如果有人访问您的站点时添加了%,则将采用此重写规则。它将导致重定向,因此这必须是最后一条规则。重定向后,您的.htaccess将再次被解析。@user2431427我忘了转义%符号。(添加\before%)请尝试使用已编辑的规则。再次感谢您的帮助。我尝试了转义,甚至删除了所有其他重写规则,但我仍然得到“您的浏览器发送了一个此服务器无法理解的请求”。当url有一个以%。@user2431427结尾的get变量时,似乎无法用重写规则解决此问题。因此,这种解决方案毫无意义。也许你的HTML代码中有一个格式错误的URL?