Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Вопрос по htaccess

Модерирует : Cheery

articlebot (24-05-2016 20:32): mod_rewrite: документация, готовые решения, вопросы  Версия для печати • ПодписатьсяДобавить в закладки

   

sardvd

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте.
Есть небольшой сайтик. Для красивых урлов и не громоздкой структуры на диске в htaccess прописано такое правило:

Код:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/([_0-9a-z-]+)$ /pages/$1.php [L]  

 
То есть, по ссылке www.site.ru/rules посетителю на самом деле показывается www.site.ru/pages/rules.php
Ну и в папке pages уже куча различных файлов.
 
Возникла проблема.
Нужно, чтобы посетитель по запросу www.site.ru/test попал на www.site.ru/test/index.php (это реально существующий файл). А уже если его нет - тогда уже срабатывал код из примера выше.
И вот тут я споткнулся.
Понятно, что он пытается ломиться на www.site.ru/pages/test.php, а вот как запретить это делать для существующей папки?
Причем использовать прямую ссылку на файл www.site.ru/test/index.php не хочу, хочу быть владычицей морскою чтобы он открывался по запросу www.site.ru/test
 
Пытался сделать так:

Код:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/([_0-9a-z-]+)$ /$1/index.php [L]  
 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/([_0-9a-z-]+)index.php$ /pages/$1.php [L]  

То есть, при обращении к папке пользователю должен показываться index.php, а уже дальше если есть index - то показываем его, а если нет - то тянем страницу /pages/$1.php. Однако фокус не сработал.
 
Подскажите, как победить?

Всего записей: 126 | Зарегистр. 16-12-2007 | Отправлено: 00:38 22-02-2016
sardvd

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Неужели никто не знает?
Подозреваю, что решение какое-то простое, но сам ума дать не могу... ((

Всего записей: 126 | Зарегистр. 16-12-2007 | Отправлено: 10:25 24-02-2016
bordellinoff

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
@sardvd
 
RewriteCond ... !-f и !-d неправильно использованы в данном случае... Всё прекрасно работает следующим образом:
 
RewriteEngine On
# Здесь наш base, предположу, что это "/" (у меня -- "/public/" )
RewriteBase /
 
# Проверяем наличие файла или директории, если ни того, ни другого не существует, то ...
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
 
# ... ищем файл в папку #pages"
RewriteRule (.*) "pages/$1.php" [L]
 
# В противном случае, если файл физически присутствует, ни каких действий не нужно. Всё.

Всего записей: 50 | Зарегистр. 13-10-2013 | Отправлено: 14:04 05-03-2016 | Исправлено: bordellinoff, 14:05 05-03-2016
JekaRus

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Возможно ли заблокировать доступ к сайту с определенных браузеров?
Пробовал запретить вход с Firefox таким конфигом
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^Mozilla* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Firefox* [NC]
RewriteRule ^login.php$ /111.html
 
Но почему-то редирект происходит со всех браузеров, например Opera и Chrom  на 111.html

Всего записей: 1046 | Зарегистр. 10-08-2005 | Отправлено: 00:38 23-05-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sardvd
bordellinoff
JekaRus
Вот тема - mod_rewrite: документация, готовые решения, вопросы и только в ней и следует спрашивать
 

Цитата:
Возможно ли заблокировать доступ к сайту с определенных браузеров?

можно, но легко подделывается/обходится, поэтому смысла особого нет
 
если происходит проброс - смотрите какие юзер-агенты у браузеров.
и, если и тогда непонятно, включаем логгирование обработки запроса и выясняем что и как.

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 00:40 23-05-2016 | Исправлено: Mavrikii, 00:42 23-05-2016
JekaRus

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Mavrikii
Спасибо за ответ.
Задам вопрос в другой теме, так как уже все перепробовал.
В названии темы mod_rewrite добавьте слово htaccess чтобы легче было поиском находить куда писать такие вопросы.

Всего записей: 1046 | Зарегистр. 10-08-2005 | Отправлено: 03:13 23-05-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
JekaRus

Цитата:
легче было поиском находить куда писать такие вопросы

это не имеет прямого отношения к .htaccess, так как может быть не только там плюс в .htaccess может быть много чего другого, не относящегося к mod_rewrite

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 04:54 23-05-2016
   

Компьютерный форум Ru.Board » Интернет » Web-программирование » Вопрос по htaccess
articlebot (24-05-2016 20:32): mod_rewrite: документация, готовые решения, вопросы


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru