我的urlscheme是/foo/var1-var2-var3…/bar
我正在使用这些mod_rewrite规则:
RewriteBase /foo/ RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^ index.php [PT,L]
如果string“var1-var2 …”的长度大于257个字符,则返回错误403 Forbidden和404。 但是,如果“var1-var2 …”string的长度为257个字符或更less,并且后面跟着一个斜杠,则剩余url的长度可以是任意长度。 如何克服这个限制?
您正在遇到底层文件系统的限制。
看看文件系统限制 。 你会看到大多数文件的最大长度是255字节。 因此,当apache和/或您的重写规则检查文件是否存在时,操作系统会将错误返回给apache。
对于Apache,如果你把这样的规则放在.htaccess文件中,解决这个问题为时已晚。 Apache将已经尝试统计长文件名,从而引发文件系统错误'(36)文件名太长',返回403错误。
我看到两个选项: