Какие должны быть правила в htaccess для доступа к папке и ноду с одинаковым именем

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

Аватар пользователя GROL GROL 14 января 2009 в 20:39

При помощи Views была сделана страница download. На сервере в одноименной папке лежат файлы для загрузки. В htaccess кроме стандартных правил написано вот такое:

  RewriteCond %{REQUEST_FILENAME} -d
  RewriteCond %{REQUEST_URI} =/download
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

Это позволяло для ссылок вида site.com/download/x.zip загружать файлы с сайта, а если файла не было, то открывать ту же страницу, как если бы набрать просто site.com/download.

Все работало пока не переехали на новый сервер. На старом был Apache 1 и PHP 4.4, на новом Apache 2 и PHP 5.

Сейчас это выглядит так, что вызов страницы site.com/download приводит к редиректу на site.com/download/?q=download т.е. в адресной строке меняется URL которой естественно нет, а соответственно вызов 404 ошибки. А вызов site.com/download/x.zip на прямую открывает страницу без загрузки. Весь остальной сайт работает корректно.

Что можно подправить в этой ситуации?

Комментарии

Аватар пользователя GROL GROL 15 января 2009 в 14:51

Уже устал эксперементировать. Кто нить подскажет, какого хрена при вот таких вот правилах все страницы друпала не меняют урл в адресной строке броузера, а правило для download меняет?

  # Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

  # Rewrite "Download" folder to page
  RewriteCond %{REQUEST_FILENAME} -d
  RewriteCond %{REQUEST_URI} =/download
  RewriteRule ^(.*)$ http://site.com/index.php?q=download [L,QSA]

Аватар пользователя ingumsky@drupal.org ingumsky@drupal.org 17 января 2009 в 15:15

Я не специалист в Друпал и в настройках .htaccess, но мне кажется, что в Вашем случае проблема в том, что апач сначала ищет директорию, а не пытается скормить download в качестве аргумента ?q= Как от этого избавиться, к сожалению, не скажу, но посмотрел бы на Вашем месте в конфиг апача.

Аватар пользователя GROL GROL 21 января 2009 в 17:33

Согласен, судя по всему лажа где-то в настройках Аппача. Но я скорее туда не полезу бо ни мозгов на это, ни доступа Smile
Хостеру наверно даже не смогу объяснить в чем проблема. Вернее, большая вероятность что меня попросту пошлют Smile

Посему, буду рад любым идеям как все это пофиксить.

Аватар пользователя GROL GROL 21 января 2009 в 20:22

Перепробовал уже что мог - один фиг редиректит на подпапку, т.е. добавляет в конец слэш. Пока остановился на таком вот самом приемлемом варианте:

  # Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

  RewriteCond %{REQUEST_FILENAME} -d
  RewriteCond %{REQUEST_URI} =/download/
  RewriteRule ^(.*)$ index.php?q=$1 [L]