URL中有%20报错 forbidden 403禁止错误

场景:

网站:www.abc.com/s/搜索key 名字,能正常访问(名字和key 中间有空格)
转义后的URL:www.abc.com/s/搜索key%20名字。

后来莫名其妙的就不能访问了,报Forbidden 错误,程序一直没动过,本地好用,线上访问不了了,那么一定是线上服务器更新了配置,也就是apache更新补丁或者升版本了。

话不多说上解决方案:

需要修改一下htaccess 里面的规则即可。

将原来的规则-> RewriteRule ^(.*)$ index.php?/$1 [L]

修改为->  RewriteRule ^(.*)$ index.php?/$1 [B,L,QSA]

齐活。

起因:

  1. 如果URL 路径中存在某些无效字符(例如、、 ),Apache 将提前触发 403 。在某些方面,这取决于操作系统。如果文件名中不允许使用该字符(根据底层操作系统),则当请求映射到文件系统时会触发 403。*:"

  2. 这发生在处理之前。 .htaccess因此,如果您定义了ErrorDocument 延迟.htaccess则不会调用您的自定义错误文档。但是,如果您在服务器配置(或 VirtualHost)中定义了ErrorDocument 早期内容,那么应该调用它。

你可能感兴趣的:(linux)