www.zeos.com.ua 6 Опубликовано: 28 февраля 2009 Рассказать Опубликовано: 28 февраля 2009 (изменено) Сайт: www.zeos.com.ua В папке "uploads" создал папку "another" и в ней создал папку "calculator"; и в этой папке создал файл index.php, получается что-то такое: www.domen.com/uploads/another/calculator/index.php Но мне надо обращаться к этому файлу не напрямую, а так: www.domen.com/calculator; для этого прописал в .htaccess, ниже всего, что в нём уже написано, такой код: # Вывод сервисов RewriteRule ^calculator(/?)+$ uploads/another/calculator/ [L] Но при обращении: www.domen.com/calculator выводится такое: "Внимание, обнаружена ошибка. По данному критерию новости не найдены, либо у вас нет доступа для просмотра этих новостей" Я так понял, что может не работает из-за того, что папка uploads защищена, тогда я сделал так: в корне создал папку "another" и в этой папке создал папку "calculator" с файлом index.php и прописал в файл .htaccess такой код: # Вывод сервисов RewriteRule ^calculator(/?)+$ another/calculator/ [L] Но при обращении к www.domen.com/calculator снова выводит ту же ошибку, что и в предыдущем варианте. Подскажите, что я сделал неправильно?! Заранее спасибо за ответ Мне кажется, что проблема в том, что я вставляю код ниже всего, что уже написано в .htaccess. Если это так, то подскажите, где правильно будет вставить? Изменено 28 февраля 2009 пользователем www.zeos.com.ua Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 076 Опубликовано: 28 февраля 2009 Рассказать Опубликовано: 28 февраля 2009 http://dle-news.ru/2007/03/02/malenkijj_so...spravlenie.html Цитата Ссылка на сообщение Поделиться на других сайтах
www.zeos.com.ua 6 Опубликовано: 1 марта 2009 Рассказать Опубликовано: 1 марта 2009 (изменено) Автор celsoft, спасибо но ксожалению это не то! Я хочу положить нужные мне папки по адресу: www.domen.com/uploads/another/calculator/index.php www.domen.com/uploads/another/Еще что-то/index.php www.domen.com/uploads/another/И еще что-то/index.php И чтобы обращаться к этим файлам по адресу: www.domen.com/calculator www.domen.com/Еще что-то www.domen.com/И еще что-то Для этого и надо прописать в .htaccess вот такое: RewriteRule ^calculator(/?)+$ another/calculator/ [L] , но куда именно? В самый верх, в самый низ или где то по центру или после какой-то строки? Помогите кто знает! ******************************************************************************** Методом "проб и ошибок" узнал, такое: В файле .htaccess внизу есть такие строчки: RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^.]+)/page/([0-9]+)(/?)+$ index.php?do=cat&category=$1&cstart=$2 [L] RewriteRule ^([^.]+)/?$ index.php?do=cat&category=$1 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^<]+)/rss.xml$ engine/rss.php?do=cat&category=$1 [L] RewriteRule ^page,([0-9]+),([^/]+).html$ index.php?do=static&page=$2&news_page=$1 [L] RewriteRule ^print:([^/]+).html$ engine/print.php?do=static&page=$1 [L] RewriteRule ^([^/]+).html$ index.php?do=static&page=$1 [L] И если прописать мой код: RewriteRule ^calculator(/?)+$ uploads/another/calculator/ [L] после строки: RewriteRule ^([^.]+)/?$ index.php?do=cat&category=$1 [L] Вот так вот: RewriteRule ^([^.]+)/?$ index.php?do=cat&category=$1 [L] RewriteRule ^calculator(/?)+$ uploads/another/calculator/ [L] То работать мой код не будет А если прописать мой код: RewriteRule ^calculator(/?)+$ uploads/another/calculator/ [L] до строки: RewriteRule ^([^.]+)/?$ index.php?do=cat&category=$1 [L] Вот так вот: RewriteRule ^calculator(/?)+$ uploads/another/calculator/ [L] RewriteRule ^([^.]+)/?$ index.php?do=cat&category=$1 [L] То работать будет Вопрос: Что такого в этой сроке прописано: RewriteRule ^([^.]+)/?$ index.php?do=cat&category=$1 [L] ??? Почему только до неё, а после неё уже не работает? И конечно же в каждую папку, например, как я создал: calculator надо создать свой .htaccess и прописать: RewriteEngine Off Кстати если прописать вместо RewriteEngine Off такое: RewriteEngine On то точно также работает 100% Заранее спасибо! Изменено 1 марта 2009 пользователем www.zeos.com.ua Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 1 марта 2009 Рассказать Опубликовано: 1 марта 2009 для этого прописал в .htaccess, ниже всего, что в нём уже написаноошибка в этом) может не работает из-за того, что папка uploads защищенакак это понимать? Вопрос: Что такого в этой сроке прописано: RewriteRule ^([^.]+)/?$ index.php?do=cat&category=$1 [L] ??? Почему только до неё, а после неё уже не работает?ну если буквально, то любая папка не существующая в реальности будет вести на index.php?do=cat&category=папка И конечно же в каждую папку, например, как я создал: calculator надо создать свой .htaccess и прописать: RewriteEngine Offзачем?) Цитата Ссылка на сообщение Поделиться на других сайтах
www.zeos.com.ua 6 Опубликовано: 1 марта 2009 Рассказать Опубликовано: 1 марта 2009 (изменено) Автор для этого прописал в .htaccess, ниже всего, что в нём уже написаноошибка в этом) >> А куда же тогда надо было вставлять? Вопрос: Что такого в этой сроке прописано: RewriteRule ^([^.]+)/?$ index.php?do=cat&category=$1 [L] ??? Почему только до неё, а после неё уже не работает?ну если буквально, то любая папка не существующая в реальности будет вести на index.php?do=cat&category=папка >> То-есть мой код надо выводить до неё я так понял? И конечно же в каждую папку, например, как я создал: calculator надо создать свой .htaccess и прописать: RewriteEngine Offзачем?) >> Потому что без RewriteEngine Off или без RewriteEngine On не работает, можете проверить у себя :-) У меня тогда еще два вопроса: Вопрос первый: Если я хочу положить файл в корень, где лежит DLE, то как мне к нему обращаться, чтобы не выводило ошибку? Пример: www.site.ru/123.html Вопрос второй: Я создал папку calculator по такому пути: www.site.ru/uploads/another/calculator и создал файл в этой папке: index.php. А также прописал в .htaccess такое: RewriteRule ^calculator(/?)([^/]*)(/?)+$ uploads/another/calculator/$1 [L] Проблема вот в чём: В файле index.php я прописал относительную ссылку (<a href="2.php">2.php</a>). И если обратиться к этой папке так: www.site.ru/calculator/, то всё работает отлично и при нажатии на мою относительную ссылку попадаешь сюда: www.site.ru/calculator/2.php Но если зайти на сайт так: www.site.ru/calculator (без косой линии) или так: www.site.ru/calculator// (две и более косых линии), то моя относительная ссылка в первом случае ведёт на страницу: www.site.ru/2.php, а во втором случае на страницу: www.site.ru/calculator//2.php Вопрос: как можно сделать так, что если человек вводит адрес: www.site.ru/calculator (без слеша), то слешь добавляется автоматически или какой-то редирект на правильный адрес: www.site.ru/calculator/. А при заходе на сайт так: www.site.ru/calculator// (два и более слеша), чтобы удаляло лишние слеши или делало редирект на правильный адрес: www.site.ru/calculator/ Очень прошу помочь, подсказать. Заранее спасибо!!!!! Изменено 1 марта 2009 пользователем www.zeos.com.ua Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 1 марта 2009 Рассказать Опубликовано: 1 марта 2009 (изменено) >> А куда же тогда надо было вставлять?>> То-есть мой код надо выводить до неё я так понял?как раз до неё, как вы и сделали Потому что без RewriteEngine Off или без RewriteEngine On не работает, можете проверить у себя :-)не проверял бы - не писал А вообще откровенно говоря я против "тысяч" правил в .htaccess - по мне так достаточно такой конструкции RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule !\.(pdf|php|js|ico|txt|gif|jpg|png|css|rss|zip|tar|gz)$ index.phpсписок расширений - по вкусу) и в самом скрипте уже определять что хочет пользователь.. Вопрос первый: Если я хочу положить файл в корень, где лежит DLE, то как мне к нему обращаться, чтобы не выводило ошибку? Пример: www.site.ru/123.htmlа какая у вас ошибка вылазиет? Вопрос: как можно сделать так, что если человек вводит адрес: www.site.ru/calculator (без слеша), то слешь добавляется автоматически или какой-то редирект на правильный адрес: www.site.ru/calculator/. А при заходе на сайт так: www.site.ru/calculator// (два и более слеша), чтобы удаляло лишние слеши или делало редирект на правильный адрес: www.site.ru/calculator/зачем вам редиректы? Просто не используйте относительные ссылки - вот и всё Изменено 1 марта 2009 пользователем Александр Медведев Цитата Ссылка на сообщение Поделиться на других сайтах
www.zeos.com.ua 6 Опубликовано: 1 марта 2009 Рассказать Опубликовано: 1 марта 2009 (изменено) Автор Потому что без RewriteEngine Off или без RewriteEngine On не работает, можете проверить у себя :-)не проверял бы - не писал >> Не знаю, но у меня работает именно с RewriteEngine Off или с RewriteEngine On и так у большинства, если создать папку www.site.ru/forum/ и обращаться к ней то будет ошибка, а если в папке forum будет .htaccess с RewriteEngine Off или с RewriteEngine On то всё будет грузиться как надо! Вопрос первый: Если я хочу положить файл в корень, где лежит DLE, то как мне к нему обращаться, чтобы не выводило ошибку? Пример: www.site.ru/123.htmlа какая у вас ошибка вылазиет? >> Такая же ошибка как и у всех: "Внимание, обнаружена ошибка. К сожалению, данная страница для Вас не доступна: возможно, был изменен ее адрес или она была удалена. Пожалуйста, воспользуйтесь поиском." Вопрос: как можно сделать так, что если человек вводит адрес: www.site.ru/calculator (без слеша), то слешь добавляется автоматически или какой-то редирект на правильный адрес: www.site.ru/calculator/. А при заходе на сайт так: www.site.ru/calculator// (два и более слеша), чтобы удаляло лишние слеши или делало редирект на правильный адрес: www.site.ru/calculator/зачем вам редиректы? Просто не используйте относительные ссылки - вот и всё >> Затем, что я не хочу чтобы пользователь видел такие вот адреса длинючие: www.site.ru/uploads/another/calculator/2.php Помогите решить мой вопрос кто знает! Заранее большущее спасибо! Изменено 1 марта 2009 пользователем www.zeos.com.ua Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 1 марта 2009 Рассказать Опубликовано: 1 марта 2009 Такая же ошибка как и у всех: "Внимание, обнаружена ошибка. К сожалению, данная страница для Вас не доступна: возможно, был изменен ее адрес или она была удалена. Пожалуйста, воспользуйтесь поиском."попробуйте передRewriteRule ^([^/]+).html$ index.php?do=static&page=$1 [L] написать RewriteCond %{REQUEST_FILENAME} !-f Затем, что я не хочу чтобы пользователь видел такие вот адреса длинючие: www.site.ru/uploads/another/calculator/2.phpпишите ссылки вида www.site.ru/calculator/2.php Цитата Ссылка на сообщение Поделиться на других сайтах
www.zeos.com.ua 6 Опубликовано: 1 марта 2009 Рассказать Опубликовано: 1 марта 2009 (изменено) Автор Александр Медведев, спасибо, прямые ссылки помогли решить проблему. Был бы очень благодарен, если бы кто-то смог мне прокомментировать данный код побуквенно: RewriteRule ^calculator(/?[^/]*)(/?)+$ uploads/another/calculator/$1 [L] Попробую сам: ^ - начало регулярного выражения calculator - название папки (/?[^/]*) - Может стоять один "/", а может и не стоять, после сколько угоно любых символов кроме "/" (/?)+ - В конце всего может стоять один "/", а может и не стоять. После один или несколько литералов. $ - Конец регулярного выражения. uploads/another/calculator/$1 - Реальный путь к файлу который надо грузить по получившемуся результату регулярного выражения. $1 - Идентификатор куда вставлять запрос регулярного выражения. [L] - Конец правила. Вопрос можно ли написать код так: Вместо: RewriteRule ^calculator(/?[^/]*)(/?)+$ uploads/another/calculator/$1 [L] написать так: RewriteRule ^calculator(/?[^/]*/?+)$ uploads/another/calculator/$1 [L] Можно ли этот код написать как то правильнее и еще короче? Так как писал его почти наугад :-( Заранее спасибо за ответ! Изменено 1 марта 2009 пользователем www.zeos.com.ua Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.