phi*_*reo 13 mod-rewrite url querystring apache-2.2
我正在使用 mod_rewrite 来重写这样的 URL:
http://example.com/1,2,3,4/foo/
Run Code Online (Sandbox Code Playgroud)
通过在 .htaccess 中执行此操作:
RewriteEngine On
RewriteRule ^([\d,]+)/foo/$ /foo.php?id=$1 [L,QSA]
Run Code Online (Sandbox Code Playgroud)
它工作正常,除了当“1,2,3,4”变成长度超过 255 个字符的字符串时,Apache 返回“403 Forbidden”。
foo.php?id=1,2,3,4
直接访问没有问题,即使 id 字符串很长,但这对我来说不是一个选择。
我应该调整一些 Apache 或其他设置吗?
更新:我用 RewriteLogLevel 9 打开了 RewriteLog。使用一个短的 id 字符串,我在我的日志文件中得到了几行。但是当 id 字符串大于 255 个字符时,不会记录任何内容(好像 mod_rewrite 甚至没有执行?)。
如果您觉得这个问题有趣/有帮助,请点赞。
您认为您遇到了文件系统的限制吗?
可能是最大文件名长度为 255 字节,当 apache 或 mod_rewrite 规则检查文件是否存在时,操作系统会向 apache 返回错误。
如果你在你的 .htaccess 文件中加入了一些规则,那么解决这个问题就太晚了。Apache 将已经尝试统计文件名并抛出文件系统错误“(36) 文件名太长”,返回 403 错误。
也许您可以更改应用程序内的 URL 模式。从斜杠到斜杠最多 255 个字符。
编辑:在此处查看此问题的详细答案。我从那里借的。
归档时间: |
|
查看次数: |
10848 次 |
最近记录: |