Apache mod-rewrite不接受查询字符串中的Double Inverted逗号

时间:2017-07-01 07:59:04

标签: php regex linux apache mod-rewrite

我的重写代码不允许在URL的查询字符串中使用双引号,以下是引导我访问404页面的URL: https://easypaper.cf/posts/Threats+of+using+%E2%80%9CShared+Wi-Fi%E2%80%9D

代码正确处理和处理其他不包含“

的网址

以下是我的重写代码:

Options +FollowSymlinks
RewriteEngine on
RewriteRule    ([A-Za-z0-9-_"?]+)$    read.php?post=$1    [NC,L]  

服务器正在使用linux操作系统。我不知道发行版及其版本。

1 个答案:

答案 0 :(得分:0)

您可以改用此规则:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ([^/]+)/?$ read.php?post=$1 [QSA,L]

最好使用否定的字符类,而不是将所有内容匹配到下一个/,而不是在字符类中包含每个字符。