Правило Mod_Rewrite не работает на производственном сервере - PullRequest
0 голосов
/ 06 июня 2009

Я безуспешно пытался получить правило, работающее на моем производственном сервере, которое отлично работает на моем сервере WAMP на моей локальной машине:


    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule \.exe /download/ [L]

На моем локальном сервере он перенаправляет все запросы прямой загрузки файлов в / download /, но на рабочем сервере файлы просто загружаются, если вы удалите условие и введите несуществующее имя файла, которое оно перенаправит в / download /. .

Как только я получу эту работу, я собираюсь добавить дополнительное условие, чтобы реферир был что-то вроде / download / ok / для загрузки файла.

Ответы [ 3 ]

1 голос
/ 06 июня 2009

Попробуйте добавить эту строку сверху:

Options +FollowSymlinks

так ...

Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule \.exe /download/ [L]

Это хорошее руководство: http://corz.org/serv/tricks/htaccess2.php

0 голосов
/ 06 июня 2009

Загрузка должна происходить из кэша!

Я чувствую себя по-настоящему глупо, я потратил бесчисленные часы на это, и все это время это была проблема с кешем, я очистил кеш Firefox, и он отлично работает ..

Я остановился на:


RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{HTTP_COOKIE} !^.*download_key=abc123.*$
RewriteRule \.exe /download/ [R]

0 голосов
/ 06 июня 2009

Попытайтесь выяснить, какое значение имеет %{REQUEST_FILENAME}:

RewriteCond %{QUERY_STRING} ^$
RewriteRule \.exe %{REQUEST_URI}?%{REQUEST_FILENAME} [R]

Может быть, вам нужно самостоятельно составить правильный путь к файловой системе:

RewriteCond %{DOCUMENT_ROOT}$0 -f
RewriteRule .*\.exe.* /download/ [L]
...