Как перенаправить на страницу после начала загрузки файла с помощью mod_rewrite? - PullRequest
0 голосов
/ 01 июня 2011

Так же, как говорится в заголовке.Скажем, человек получает доступ к файлу из моей базы данных, http://domain.com/database/file.zip. Как только загрузка этого файла была начата, я хочу, чтобы браузер снова был перенаправлен в каталог базы данных.Вот что у меня есть:

RewriteEngine On
Options +FollowSymLinks
RewriteRule ^Database(.zip)$ http://domain.com/db/index.html [R=301,L]

Но я получаю ошибку 500.

И если я слишком требователен, было бы неплохо игнорировать эту функцию в таких ссылках, как: & file = кое-что .zip.

В любом случае, заставить работать первую часть было бы просто фантастически.

Edit!

Вот что в итоге сработало для меня.Ура!

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} .*zip$|.*rar$|.*tar$|.*txt$ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !domain\.com [NC]
RewriteRule ^(.*)$ /dl.php?url=%{REQUEST_FILENAME} [L]

1 Ответ

0 голосов
/ 01 июня 2011

На самом деле это невозможно с mod_rewrite, как вы описали: как только сервер начал доставлять контент (отправил код состояния 200), невозможно инициировать второй ответ без соответствующего второго запроса.

ЕслиВы хотите сделать это, вам нужно будет сделать это на стороне клиента: например, запустить загрузку с отдельным скрытым iframe, и если загрузка начнется, вы можете изменить местоположение страницы, используя window.location.

...