php - Apache mod-rewrite 不接受查询字符串中的双引号

标签 php regex linux apache mod-rewrite

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

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

的URL

以下是我的重写代码:

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

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

最佳答案

您可以改用此规则:

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

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

关于php - Apache mod-rewrite 不接受查询字符串中的双引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44858709/

相关文章:

java - Java 正则表达式中撇号的位置

python - 消除 CSV 文件中不需要的换行符

linux - 如何测试以确保只输入一个整数并确保在汇编中输入的长度为 5 个字节或更少?

php - 如何更快地将mysql数据加载到jquery数据表中

javascript - jquery 使一个 div 跟随另一个位置

php - 如何在没有表单的情况下传递变量

python - 如何在Linux、Nativly(Python、C、Java)下提取office嵌入的OLE文件?

javascript - Codeigniter jquery ajax登录: get value from database and compare data entered

java - 如何使用正则表达式 Java 将方括号内的破折号替换为下划线

c++ - Windows 上的 Boost::Asio 不能异步工作