重写 .htaccess 不在正则表达式中拾取数字

rewrite for .htaccess not picking up numbers in the regex

提问人:Dave Fisher 提问时间:3/10/2023 最后编辑:MrWhiteDave Fisher 更新时间:3/10/2023 访问量:89

问:

我已经在文件中写入了重写,以便它用(点)替换 URL 中的任何空格。.htaccess.

除了 URL 中有数字之外,它工作正常。

RewriteRule ^([^\s%20]*)(?:\s|%20)+(.*)$ $1.$2 [N,E=NOSPACE:1,DPI]

任何帮助将不胜感激

  • /search/test test= 适用于上述正则表达式
  • /search/ 123 123= 不起作用
php html 则表达式 .htaccess utf-8

评论


答:

0赞 MrWhite 3/10/2023 #1
RewriteRule ^([^\s%20]*)(?:\s|%20)+(.*)$ $1.$2 [N,E=NOSPACE:1,DPI]

正则表达式字符类中的字符 和 被视为 3 个文本字符,而不是单个 URL 编码空格(即)。因此,任何包含或也包含空格或后面跟空格的数字都将失败,因为正则表达式将无法匹配。该模式与 %-decoded 的 URL 路径匹配,因此无论如何都不需要尝试匹配。%20%2020RewriteRule%20

因此,您基本上只需要从规则中删除即可。例如:%20

RewriteRule ^([^\s]*)(?:\s)+(.*)$ $1.$2 [N,E=NOSPACE:1,DPI]

评论

0赞 Dave Fisher 3/10/2023
确认这个和 DLK 的版本都有效,但这个解决了我后来在 URL 中使用特殊字符的另一个问题 - 谢谢海报