500 Внутренняя ошибка при использовании mod_rewrite в .htaccess - PullRequest
1 голос
/ 27 апреля 2009

Понятия не имею почему, но каждый раз, когда я делаю что-то со сложным шаблоном для RewriteRule в файле .htaccess, я получаю внутреннюю ошибку 500. Мой текущий файл .htaccess полностью:

RewriteEngine on
RewriteRule ^ups/sections/([A-Za-z]{3})/([A-Za-z0-9_-+\.]+)/?$ /dl.php?loct=sec&sec=$1&file=$2 [R=302]

Я пробовал только с "RewriteEngine on" и не получаю ошибки. Я пробовал что-то действительно простое, например: «RewriteRule ^ ups /? $ / Xyz [R]», которое работает отлично. Я пробовал с и без опции Symlinks. Я пробовал с косой чертой в начале шаблона и без нее, а также с косой чертой в начале замены и без нее.

Кажется, что когда бы я ни использовал "сложное" выражение регулярных выражений, это просто не работает.

Примечание: я не являюсь владельцем этого сервера и не могу изменить конфигурационные файлы apache.

Любая помощь будет оценена.

Ответы [ 2 ]

1 голос
/ 27 апреля 2009

Чтобы объяснить вашу ошибку: Внутри класса персонажей черточки (-) всегда описывают диапазон между двумя символами. за исключением того, что он появляется в начале или в конце класса персонажа. Но ваш диапазон от _ до + недопустим, поскольку _ (0x5F) имеет более высокую позицию, чем + (0x2B).

1 голос
/ 27 апреля 2009

Попробуйте изменить его на

RewriteRule ^ups/sections/([A-Za-z]{3})/([A-Za-z0-9_+.-]+)/?$ /dl.php?loct=sec&sec=$1&file=$2 [R=302]
...