【发布时间】:2021-06-06 04:27:59
【问题描述】:
我使用 .htaccess-rewriting 通过 Apache (2.4.46) 运行我的 API,以提供干净的 URL。
Apache 在 URL 中的文件名限制为 257 个字符。
.htacces 看起来像这样:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^api/name/v([0-99]*)/sub/([0-9a-zA-Z+.,-_]*)/?$ api/name/v$1/sub/?item=$2 [L]
RewriteRule ^api/name/v([0-99]*)/sub/([0-9a-zA-Z+.,-_]*)/([0-9a-zA-Z+.,-_]*)/?$ api/name/v$1/sub/?field=$2&item=$3 [L]
第一条规则将限制为 257 个字符的项目:api/name/v1/sub/item1,item2,item3,item4,...
第二条规则不会限制为 257 个字符的项目:api/name/v1/sub/some_field/item1,item2,item3,item4,...
我可能使用 2nd-not-recognized-257-char-option 在 URL 中放置更多项目,但我想依靠 Apache 标准来保证安全。
谁能弄清楚为什么第一个重写规则符合限制而第二个不符合?
【问题讨论】:
-
欢迎来到 SO,感谢您在问题中分享您的努力。您能否提及哪些规则有效以及哪些规则无效的示例或 URL?这将使我们更好地理解问题,谢谢。
-
@RavinderSingh13 如上面所写,URL 是
https://example.org/api/name/v1/sub/item1,item2,item3,item4,...,例如,限制为 257 个字符。和https://example.org/api/name/v1/sub/some_field/item1,item2,item3,item4,...例如,项目字符串没有 257 个字符的限制 -
“正如这里所写的 Apache 有一个限制” - 链接的问题没有像您暗示的那样提及限制?
标签: apache .htaccess url-rewriting filenames rules