При помощи Views была сделана страница download. На сервере в одноименной папке лежат файлы для загрузки. В htaccess кроме стандартных правил написано вот такое:
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 на прямую открывает страницу без загрузки. Весь остальной сайт работает корректно.
Что можно подправить в этой ситуации?
Комментарии
Уже устал эксперементировать. Кто нить подскажет, какого хрена при вот таких вот правилах все страницы друпала не меняют урл в адресной строке броузера, а правило для download меняет?
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]
Я не специалист в Друпал и в настройках .htaccess, но мне кажется, что в Вашем случае проблема в том, что апач сначала ищет директорию, а не пытается скормить download в качестве аргумента ?q= Как от этого избавиться, к сожалению, не скажу, но посмотрел бы на Вашем месте в конфиг апача.
Согласен, судя по всему лажа где-то в настройках Аппача. Но я скорее туда не полезу бо ни мозгов на это, ни доступа
Хостеру наверно даже не смогу объяснить в чем проблема. Вернее, большая вероятность что меня попросту пошлют
Посему, буду рад любым идеям как все это пофиксить.
Перепробовал уже что мог - один фиг редиректит на подпапку, т.е. добавляет в конец слэш. Пока остановился на таком вот самом приемлемом варианте:
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]