mod_rewrite против символической ссылки: браузер не одурачен - PullRequest
0 голосов
/ 27 мая 2009

У меня есть файл foo.bar.1 на моем сервере, и когда я пытаюсь получить к нему доступ из браузера (firefox), я получаю всплывающее окно, которое говорит: «Вы выбрали открыть foo.bar.1, который является: 1 файл ... Что должен делать Firefox с этим файлом ... ". Если я создаю символическую ссылку на нее, foo.dat, я могу получить к ней доступ; содержимое отображается в браузере, как я ожидаю.

Моя проблема в том, что я не хочу создавать символические ссылки для всех этих файлов, я хочу использовать правило mod_rewrite, например

RewriteRule ^([^/]+)\.dat$ $1.bar.1

Но это не похоже на символическую ссылку. Он выдает то же самое всплывающее окно (хотя, как ни странно, теперь он говорит: «Вы решили открыть foo.dat, который является: DAT-файлом ...».

Как я могу сделать правило переписывания таким образом, чтобы браузер обманом воспринимал его как обычный файл .dat, как это делается по символической ссылке?

Ответы [ 2 ]

2 голосов
/ 27 мая 2009

Если у вас установлен mod_mime, вы можете сделать:

AddType text/plain .1

Не тестировался, но вместо загрузки должен отображаться файл

См. http://httpd.apache.org/docs/2.0/mod/mod_mime.html#addtype для документации AddType

1 голос
/ 27 мая 2009

Просмотрите аргумент [T] для директивы RewriteRule:

http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriterule

Когда вы создаете символическую ссылку, Apache думает, что он обслуживает файл .dat, тогда как при использовании mod_rewrite Apache все еще думает, что он обслуживает файл .1. Это появляется в заголовке Content-type, который подается браузеру.

...