Добрый день! Есть файл, загрузка которого осуществляется по ссылке http://localhost/files/default.txt Задача: сделать доступной загрузку этого же файла по любому имени обращения к нему. Например, по ссылке http://localhost/files/other.txt тоже должен загружаться файл default.txt. Пытаюсь сделать это с помощью .htaccess Код (Text): RewriteEngine On RedirectMatch "files/(.*\.txt)$" "http://localhost/files/$1" и получаю ошибку: "Ошибка: Ошибка сети". Где здесь ошибка в htaccess?
добавил htaccess в папку files, т.е. сделал по-другому, и загрузка заработала: Код (Text): <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /files/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . readme.txt [L] </IfModule> Но всё же остается вопрос: в первом случае что-то можно было изменить, или изначально задача нерешаемая первым способом?
В первом посте у вас никак не связанные друг с другом директивы. То что вы хотите сделать, называется рерайт: Код (Text): RewriteRule ^files/other\.txt$ files/default.txt [L] Описание директивы: RewriteRule
miketomlin, спасибо за ответ, это частично работающее решение. Оно отрабатывает запрос по существующему имени файла, но отдает error 404, если обратиться по несуществующему имени.
Не понял, подробнее объясните. Это как раз-таки желательно использовать для адресов, для кот. нет соотв. файлов, иначе может и не сработать.
Имеете в виду, чтобы можно было обращаться по разным адресам (в пределах ветки /files/)? Ну, укажите в маске правила вместо other или other\.txt точку со звездочкой. Если при этом будет возникать зацикливание, добавьте перед правилом условие Код (Text): RewriteCond %{REQUEST_FILENAME} !-f Описание директивы: RewriteCond --- Добавлено --- Для этого варианта можно просто не закрывать регулярку (предпочтительный способ): ^files/ и все!
Я закомментировал все правила в .htaccess в папке files, внес строку в .htaccess, который в корне. После этого стала отдаваться 404 Сейчас попробую предложенный вами способ "вместо other или other\.txt точку со звездочкой" У меня на самом деле еще вопрос есть, я его не задавал, чтобы не смешивать в одной теме. Но если вы вдруг знаете ответ, прошу помочь: пытаюсь поставить посредством .htaccess реферальную куку, получаю error 500. Убил вчера вечер и полночи, вопрос не решил. Неработающий код: Код (Text): Header set Set-Cookie referer="expr=%{HTTP_REFERER}"
Я выше показал еще более простой вариант маски правила для случая, если концовка пути в адресе запроса может быть любой (т.е. для любого расширения и т.п.). --- Добавлено --- И правильно делали. Создавайте новую тему. Или попросите модеров выделить этот ваш вопрос в новую тему. Кстати, ваши вопросы к пыху не имеют прямого отношения. Здесь есть более подходящий раздел И сильно не надейтесь на помощь. PHP-спецы не любят загромождать .htaccess и прочие конфиги сервера подобными действиями, предпочитая их выполнять программно.