Моя схема URL-адресов /foo/var1-var2-var3.../bar
Я использую эти правила mod_rewrite:
RewriteBase /foo/
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [PT,L]
Если длина строки «var1-var2 ...» больше 257 символов, то возвращается ошибка 403 Forbidden и 404. Однако, если длина строки 'var1-var2 ...' составляет 257 символов или меньше, после чего следует косая черта, длина оставшегося URL-адреса может быть любой длины. Как преодолеть этот предел?
Вы столкнулись с ограничением базовой файловой системы.
Взгляни на Ограничения файловой системы. Вы увидите, что у большинства из них максимальная длина имени файла составляет 255 байтов. Таким образом, когда apache и / или ваше правило перезаписи проверяет, существует ли файл, операционная система возвращает в apache ошибку.
В Apache, если вы поместите такие правила в файл .htaccess, будет слишком поздно решать проблему. Apache уже попытался определить длинное имя файла, что привело к ошибке файловой системы «(36) File name too long», возвращающей ошибку 403.
Я вижу два варианта: