作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我认为它应该匹配时,我遇到了 mod_rewrite 规则不匹配的问题。
规则如下:
RewriteRule ^api/(.*)\.(json|xml|csv|txt|printr|basictxt)$ api/endpoint.php?api_request=$1&api_response_type=$2 [QSA]
一个示例 url 是:
http://ourdomain.tld/api/aaaaa/bbbb/cccc%0Adddd.json
只要您的 url 中没有 $0A
(据我所知),此规则就可以正常工作。
我意识到 .
意味着除新行之外的任何其他内容,并且尝试使用如下规则来绕过新行或百分比符号,因为我不确定它在mod_rewrite 看到它的时间,但没有一个起作用:
RewriteRule ^api/([.\s]*)\.(json|xml|csv|txt|printr|basictxt)$ api/endpoint.php?api_request=$1&api_response_type=$2 [QSA]
RewriteRule ^api/([.\%]*)\.(json|xml|csv|txt|printr|basictxt)$ api/endpoint.php?api_request=$1&api_response_type=$2 [QSA]
RewriteRule ^api/([.%]*)\.(json|xml|csv|txt|printr|basictxt)$ api/endpoint.php?api_request=$1&api_response_type=$2 [QSA]
奇怪的是,即使是以下所有 url 也会失败,即使是那些没有 %
符号的:
RewriteRule ^api/([.]*)\.(json|xml|csv|txt|printr|basictxt)$ api/endpoint.php?api_request=$1&api_response_type=$2 [QSA]
如果有人能为我阐明这一点,我将不胜感激,因为我无法真正改变 API 的工作方式(IE,我无法对其进行 base64 编码等)并且需要使用里面有新的一行。
我在 http://htaccess.madewithlove.be/ 测试过它他们的工具认为它应该工作!
编辑:
我们有针对上述 URL 的解决方案,但它不适用于以下示例:
/api/something/sent+40.06K+bytes++received+7.83M+bytes++542.70K+bytes%2Fsec%0Atotal+size+is+19.83G++speedup+is+2520.16+%28Completed+in+14+seconds%29.json
谢谢。
最佳答案
....and need to get a value to it with a newline in it.
您缺少插入符号 ^
被认为是您的字符类 [^.]
中的否定运算符
RewriteRule ^api/([^.]*)\.(json|xml|csv|txt|printr|basictxt)$ api/endpoint.php?api_request=$1&api_response_type=$2 [QSA]
参见 regex101
演示
关于regex - 带有编码新行的 mod_rewrite 正则表达式规则 (%0A),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20748198/
我是一名优秀的程序员,十分优秀!