Как сделать линки на файлы?

Главные вкладки

Аватар пользователя u56 u56 4 июля 2009 в 14:38

К примеру кладу pdf файл в корневую сайта, делаю линк на него типа Some description
А в итоге по подсказке линка выглядит как localhost/node/somefile.pdf и естественно "page not found".
Пытался искать решение гуглом, но такое впечатление что больше ни у кого таких проблем нет. Есть какие-то правила на создание таких линков без использования специальных модулей?

Комментарии

Аватар пользователя zhylik zhylik 4 июля 2009 в 16:34

Если создавать путь в редакторе, то разве нельзя указать "/myfolder/myfile.ext" (путь к файлу http://mysite/myfolder/myfile.ext)? т.е. просто слеш вначале?

Если создавать внутри модуля, то надо смотреть в сторону [ru-api=file_create_url]file_create_url()[/ru-api]. Файл должен лежать в файловой директории! Ф-ия учитывает публичный/приватный варианты.

я хоть о нужном подумал?)

Аватар пользователя NurOff NurOff 4 июля 2009 в 16:44

Сыслочка нужна на файл лежащий в корне сайта. Ставим слэш.
Например: Скачать по ссылке
Скачать по <a href="/blank.rar">ссылке</a>
Ну а если вы не ставите слэш, то ссылочка станет вида http://сайт/страница на которой ссылка/ваш файл
ЗЫ. На ссылку не жать, нет такого файла в корневой папке этого сайта, просто для наглядности делал.

Аватар пользователя NurOff NurOff 4 июля 2009 в 16:41

Хы, наши кони тихо скачут, простите за флуд. Но пока я отвечал с моим тормозным(сегодня) инетом аналогичный ответ уже появился Smile

Аватар пользователя gorden2@drupal.org gorden2@drupal.org 9 августа 2009 в 8:36

Ничего вышесказанное не помогает. Таже самая проблема. Ссылка переносит на страницу вместо файла, точнее на страницу "Страница не найдена". Есть ли какая возможность создать ссылку на файл? С помощью модулей создать ссылку не получается, так как стоит ограничение в 2М. Нужно перепрописать php.ini Вся беда в том что я уже залил порядочное количество файлов через FTP и думал просто создать на них ссылки. Не тут-то было.

Аватар пользователя gn@drupal.org gn@drupal.org 9 августа 2009 в 14:48

Неужели слэш не помогает - "/somefile.pdf" вместо "somefile.pdf" совсем-совсем ни на что не влияет? А все остальные внутренние ссылки нормально работают?
А в settings.php какой-нибудь base_url насильственно не прописан?
(Кстати говоря, хранить кучу файлов в корневой директории сайта - не очень хорошая идея).

Аватар пользователя gorden2@drupal.org gorden2@drupal.org 9 августа 2009 в 21:50

Нет, никакие слэшы, к сожалению, не помогают. Происходит переход на другую страницу(node). В общем-то settings.php я не трогал. Если не сложно подскажите, пожалуйста, что там должно быть или наоборот не должно. И еще какой еще вариант хранения файлов может быть. Думаю, если не решу проблему, придется отказаться от Drupal.

Аватар пользователя gn@drupal.org gn@drupal.org 9 августа 2009 в 23:30

А внутренние ссылки не на файлы, а на другие страницы работают нормально, или тоже не работают? От слэша зависят или нет?
Если settings.php не трогали, то и не трогайте.
Попробуйте заодно вообще без Друпала - создайте на вашем сервере простой html-файл, пропишите в нём ссылки на ваши PDF-файлы, откройте браузером и посмотрите, открываются ссылки или нет. Может, это проблема не с Друпалом, а с сервером или браузером.

«Думаю, если не решу проблему, придется отказаться от Drupal.»

В своё время по телевизору крутили назойливую рекламу, в которой известный футболист радостно заявлял: "Каждая игра отнимает много сил. Но я для себя эту проблему решил: Сникерс — и все в полном порядке!".
КВНщики пародировали эту рекламу примерно так: "Каждая игра отнимает много сил. Но я нашёл решение этой проблемы - я больше не играю в футбол!". (И действительно - футболист к тому времени как раз решил закончить с большим спортом).
В общем, подумайте.

Аватар пользователя gyurza2000 gyurza2000 10 августа 2009 в 1:28

похожие грабли: пытаюсь в админке добавить новую менюшку, ссылающуюся на каталог /soft в корне сайта. А мне в ответ "Ссылка '/soft' введена неправильно или у Вас нет доступа к этому ресурсу." Права есть и ссылка верная, ранее ссылки в блокноте в html так и писал и всё работало

Аватар пользователя gn@drupal.org gn@drupal.org 10 августа 2009 в 11:16

"gyurza2000" wrote:
ссылающуюся на каталог /soft

Ссылка прямо на каталог, не на конкретный файл?
По умолчанию, такие ссылки в Друпале и не должны работать по вполне понятной причине - поэтому в .htaccess и прописано

# Don't show directory listings for URLs which map to a directory.
Options -Indexes

Аватар пользователя gyurza2000 gyurza2000 10 августа 2009 в 11:58

ну просто я в этот какталог сваливал всякие проги, когда меня кто то просил и люди их оттуда забирали без лишних примудростей. Так значит .htaccess подправить?

и что там надо поставить после Options = ?

Аватар пользователя marazmus marazmus 10 августа 2009 в 11:52

"gyurza2000" wrote:
похожие грабли: пытаюсь в админке добавить новую менюшку, ссылающуюся на каталог /soft в корне сайта. А мне в ответ "Ссылка '/soft' введена неправильно или у Вас нет доступа к этому ресурсу." Права есть и ссылка верная, ранее ссылки в блокноте в html так и писал и всё работало

Такие ссылки нужно прописывать в "полном формате" - не просто soft, а именно http://ваш_сайт.ру/soft/

Аватар пользователя gn@drupal.org gn@drupal.org 10 августа 2009 в 12:16

"gyurza2000" wrote:
всё, понял, закоментил строчку в .htaccess

В смысле в корневой директории?
Ну и как теперь - содержимое /sites/default/ уже всем видно? Smile

Аватар пользователя NurOff NurOff 10 августа 2009 в 15:58
# Don't show directory listings for URLs which map to a directory.
Options -Indexes

Не рекомендую менять.
А иначе действительно, я уведу ваш сайт полностью.
А если у вас там в какой-нибудь папочке лежат бэкапы базы Lol
Тогда у меня будет полная копия вашего сайта...

# Set the default handler.
DirectoryIndex index.php

Это по умолчанию.
Рекомендуют:

# Set the default handler.
DirectoryIndex index.php index.html index.htm

И положить в вашу произвольную директорию пустой файл index.html.
Будет еще лучше не пустой, а с понятным отображаемым содержанием.
А ссылки для скачивания все таки пишите в таком виде /папка/файл

Аватар пользователя gyurza2000 gyurza2000 10 августа 2009 в 22:03

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

А как можно скрыть пункт меню (Основного меню) от всех пользователей, кроме админа?

Аватар пользователя gn@drupal.org gn@drupal.org 11 августа 2009 в 12:41

"gyurza2000" wrote:
а если у меня в этом каталоге сотни файлов

Я бы попробовал передвинуть эти файлы из корневой директории в какую-нибудь конкретную, создать в ней отдельный .htaccess файл, и в нём разрешить directory listing и что ещё потребуется. А от мысли о сотнях файлов, лежащих прямо в корневой директории, меня, честно говоря, несколько передёргивает.

Аватар пользователя gyurza2000 gyurza2000 11 августа 2009 в 22:34

Меня от такого тоже коробит, я же не утверждал про сотни файлов в корне сайта!!!Они в папке /soft !!!

по-подробнее можно, что добавить в .htaccess лежащем в папке, содержимое которой я хотел бы открыть

Аватар пользователя gn@drupal.org gn@drupal.org 11 августа 2009 в 23:08

"gyurza2000" wrote:
по-подробнее можно, что добавить в .htaccess лежащем в папке, содержимое которой я хотел бы открыть

Я сам не пробовал, но по идее, если "-" запрещает Directory listing, то "+" должен разрешать.

Indexes

Sometimes, when you request a directory with no index file (index.php, default.asp etc.), you will instead see a directory listing of all the public files in the current directory. For a lot of people, this can be a nuisance and they'd rather remove the ability of users to view these directory listings. To do this, simply insert the following line in your .htaccess file:

Options -Indexes

This will remove the directory listing option for all directories in and below the one in which the .htaccess file is placed. If someone requests a directory that does not contain any index files (which would be displayed by default), then a 403 error code will be sent to the browser and either a custom error document or a standard one for your server will be displayed.

If you want to enable directory listings for some directories on your server, just create a .htaccess file in those directories and place in it the line:

Options +Indexes

This works in exactly the same way as disabling indexes, except it will enable them instead. If directory listings are already enabled, either through a .htaccess file higher up in the directory structure or in the httpd.conf file, then this setting will have no effect.

Аватар пользователя gyurza2000 gyurza2000 12 августа 2009 в 0:22

Красота, слушай, спасибо большое тебе, а то этот WebFM очень тормознутая вещь, да и прав там дохрена - можно и удалять и создавать и добавлять, а мне как раз нужно что бы то что я выложил оставалось неизменным Smile

Аватар пользователя Andy-starik Andy-starik 26 ноября 2009 в 22:00

Такая же ерунда. Прикрепленный файл вместо того, чтобы загружаться, открывается. Загрузил на сайт rar, а он не скачивается, а "читается"! Как сделать простую ссылку на закачку, подскажите?

Аватар пользователя Andy-starik Andy-starik 26 ноября 2009 в 22:17

Про зип это мысль! Попробую. А если можно поподробней, как сервер настраивать? Кстати, там же залиты doc-файлы и картинки, так эксплорер их открывает прямо в себе (хотя бы правильно), а опера предлагает загрузить (что и требуется). Как тут настроить, чтобы все працювало?

Аватар пользователя NurOff NurOff 30 ноября 2009 в 12:08

Да надо прописать расширения где-то. Я это решил.
И все расширения необходимые мне прописал.
Вот где и как я пока не помню. Вспомню или найду отпишусь в теме.
Может кто помнит как это решается?

Аватар пользователя NurOff NurOff 30 ноября 2009 в 12:27

Нашел. Ищите файл /includes/file.inc
И найдите участок кода похожий на приведенный ниже.
Добавьте в него ваше описание типа.
К примеру, архив rar:

function file_get_mimetype($filename, $mapping = NULL) {
  if (!is_array($mapping)) {
    $mapping = variable_get('mime_extension_mapping', array(
......
      'rar' => 'application/rar',
......
    ));
  }

Предварительно проверьте нет ли там уже вашего расширения.

Аватар пользователя TerribleZ TerribleZ 7 октября 2010 в 10:51

Была та же проблема: "ссылка переходила на страницу вместо файла, точнее на страницу "Страница не найдена".
Менял .htaccess, file.inc, ссылки по разному прописывал - ничего не помагало.
Решилось очень просто. Переименовал скачиваемый файл из русского на английский и всё заработало. Был файл с названием Отзыв.doc стал otziv.doc Может у кого такая же проблема)