mod_rewrite работает неожиданно - PullRequest
0 голосов
/ 01 апреля 2012

Я не могу понять это независимо от того, сколько раз я гуглю это или думаю об этом.У меня в файле .htaccess есть RewriteRule: RewriteRule ^/download/([^/\.])/?$ /downloadfile.php?f=$1 [L]

Когда я использую это, моя страница загружается нормально, но при переходе по ссылке http://www.example.com/download/file.ext она тянет страницу 404.Однако, если я загружаю страницу, а затем изменяю свой RewriteRule на RewriteRule ^/download/([^/\])/?$ /downloadfile.php?f=$1 [L] (с учетом изменения RegEx), ссылка работает точно так, как я ожидаю ... До перезагрузки страницы, что приводит к ошибке 500 из-заплохое выражение регулярных выражений?(Я проверил свой журнал ошибок Apache, вот откуда я знаю, что он читается как плохое регулярное выражение)

Итак, что я могу сделать, чтобы эта работа работала?Я также пробовал (.*) и ([.*]) для регулярных выражений, но это тоже не сработало ... может кто-нибудь сказать мне, что я делаю неправильно?

Ответы [ 2 ]

1 голос
/ 01 апреля 2012

mod_rewrite удаляет префикс (начальный слеш) из URI, когда вы используете его в файле .htaccess.Ваше регулярное выражение должно быть удалено:

RewriteRule ^download/([^/\.]*)/?$ /downloadfile.php?f=$1 [L]
0 голосов
/ 01 апреля 2012

Это должно работать:

RewriteRule ^/?download/([^/]*) /downloadfile.php?f=$1 [L]

Начальная косая черта требуется в apache 1.x и удалена в версии 2.x Вы также отрицали точку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...