Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как исключить директорию из правила в .htaccess?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Rooner
Отправлено: 21 Марта, 2013 - 11:48:00
Post Id


Посетитель


Покинул форум
Сообщений всего: 291
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




В корне сайта лежит .htaccess, который перенаправляет абсолютно все запросы на index.php, это хорошо, и так нужно, но необходимо исключить одну папку - admin, как это сделать? Чтобы при запросах к файлам внутри этой папки не работало это правило
CODE (htmlphp):
скопировать код в буфер обмена
  1. RewriteEngine on
  2. Options +FollowSymlinks
  3. RewriteCond %{REQUEST_FILENAME} !-f
  4. RewriteCond %{REQUEST_FILENAME} !-d
  5. RewriteRule ^(.*)$ index.php [L,QSA]

(Отредактировано автором: 21 Марта, 2013 - 11:49:42)

 
 Top
LCarlo
Отправлено: 21 Марта, 2013 - 11:49:35
Post Id



Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Окт. 2011  


Помог: 0 раз(а)




RewriteRule ^admin.php$ 404.html [L] ?
 
 Top
Rooner
Отправлено: 21 Марта, 2013 - 11:52:07
Post Id


Посетитель


Покинул форум
Сообщений всего: 291
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




LCarlo, нужно добавить строчку к тем что я написал? не работает так
 
 Top
LCarlo
Отправлено: 21 Марта, 2013 - 11:55:10
Post Id



Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Окт. 2011  


Помог: 0 раз(а)




RewriteEngine on
Options +FollowSymlinks
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]
RewriteRule ^admin.php$ admin.php [L]
 
 Top
LIME
Отправлено: 21 Марта, 2013 - 12:02:52
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




RewriteEngine on
Options +FollowSymlinks
RewriteRule ^admin/?$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]
 
 Top
Rooner
Отправлено: 21 Марта, 2013 - 12:04:57
Post Id


Посетитель


Покинул форум
Сообщений всего: 291
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




LCarlo, а почему написано admin.php, мне нужно исключить папку, т.е. все файлы внутри нее, а не 1 файл
 
 Top
LCarlo
Отправлено: 21 Марта, 2013 - 12:05:49
Post Id



Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Окт. 2011  


Помог: 0 раз(а)




А что мешает вместо admin.php указать /admin ?
 
 Top
Rooner
Отправлено: 21 Марта, 2013 - 12:18:15
Post Id


Посетитель


Покинул форум
Сообщений всего: 291
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




LIME пишет:
RewriteEngine on
Options +FollowSymlinks
RewriteRule ^admin/?$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]

Странно, но тоже не работает. Огорчение

Как я проверяю:
В корне лежит .htaccess с этим правилом
В корне лежит index.php при каждом обращении к этой страницы в БД добавляется строчка (но я не захожу на эту страницу)
Захожу в admin/log.php и вижу что строчки добавляются в БД
Отсюда следует, что запрос admin/log.php проходит через index.php в корне сайта
Надеюсь не перемудрил в объяснениях
(Добавление)
LCarlo, хм даже страницу не получается исключить
CODE (htmlphp):
скопировать код в буфер обмена
  1. RewriteEngine on
  2. Options +FollowSymlinks
  3. RewriteCond %{REQUEST_FILENAME} !-f
  4. RewriteCond %{REQUEST_FILENAME} !-d
  5. RewriteRule ^(.*)$ index.php [L,QSA]
  6. RewriteRule ^log.php$ log.php [L]

Все равно выполняется код, который находится в index.php в корне сайта
 
 Top
LCarlo
Отправлено: 21 Марта, 2013 - 12:23:45
Post Id



Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Окт. 2011  


Помог: 0 раз(а)




Сделайте исключеные прямо в файле index.php, что-то вроде:
if(isset($_GET['do']) AND $_GET['do'] == 'admin') {
die();
}
 
 Top
Rooner
Отправлено: 21 Марта, 2013 - 12:24:26
Post Id


Посетитель


Покинул форум
Сообщений всего: 291
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




Попробовал добавить в папку admin свой файл htaccess с выключением обработчика RewriteEngine off, но все равно выполняется код в index.php
 
 Top
LIME
Отправлено: 21 Марта, 2013 - 12:25:45
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Rooner пишет:
Странно, но тоже не работает.
именно странно
убедись что все правильно залил на сервер
(Добавление)
LCarlo пишет:
Сделайте исключеные прямо в файле index.php, что-то вроде:
if(isset($_GET['do']) AND $_GET['do'] == 'admin') {
die();
}
что это было?
 
 Top
esterio
Отправлено: 21 Марта, 2013 - 12:33:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




Rooner пишет:
RewriteRule ^(.*)$ index.php [L,QSA]
RewriteRule ^log.php$ log.php [L

неверно. нужно поменять местами. флаг L = Last. Оно далее индекса не смотрит
 
 Top
Rooner
Отправлено: 21 Марта, 2013 - 12:33:32
Post Id


Посетитель


Покинул форум
Сообщений всего: 291
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




LCarlo, имеете ввиду так:
CODE (htmlphp):
скопировать код в буфер обмена
  1. $pos = strpos($_SERVER["REQUEST_URI"], 'admin');
  2. if ($pos === false) { } else die();

Даже так не срабатывает, т.е. текущий адрес вроде вообще не доступен Не понял
Если поместить этот код в admin/log.php то он выполняется
Если поместить этот код в index.php то он НЕ выполняется
А через GET я не понял как сделать, постоянно передавать переменную в адресе?
(Добавление)
esterio, эммм так?
CODE (htmlphp):
скопировать код в буфер обмена
  1. RewriteEngine on
  2. Options +FollowSymlinks
  3. RewriteCond %{REQUEST_FILENAME} !-f
  4. RewriteCond %{REQUEST_FILENAME} !-d
  5. RewriteRule ^log.php$ log.php [L]
  6. RewriteRule ^(.*)$ index.php [L,QSA]

Не работает
 
 Top
esterio
Отправлено: 21 Марта, 2013 - 12:41:12
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




 
 Top
Rooner
Отправлено: 21 Марта, 2013 - 12:41:31
Post Id


Посетитель


Покинул форум
Сообщений всего: 291
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




Ух что-то все печально с этой переадресацией
(Добавление)
esterio, спасибо хорошая вещь.
Как вот сюда добавить результат, вместо тире?
CODE (htmlphp):
скопировать код в буфер обмена
  1. RewriteRule ^admin/(.*)$ - [L]


Кажется вот так заработало:
CODE (htmlphp):
скопировать код в буфер обмена
  1. RewriteRule ^admin/(.*)$ admin/$ [L]
  2. RewriteRule ^(.*)$ index.php [L,QSA]

(Добавление)
Вот только конечный вариант на сайте не работает вообще Огорчение
CODE (htmlphp):
скопировать код в буфер обмена
  1. RewriteEngine on
  2. Options +FollowSymlinks
  3. RewriteCond %{REQUEST_FILENAME} !-f
  4. RewriteCond %{REQUEST_FILENAME} !-d
  5. RewriteRule ^admin/(.*)$ admin/$ [L]
  6. RewriteRule ^(.*)$ index.php [L,QSA]

(Отредактировано автором: 21 Марта, 2013 - 12:57:11)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB