Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: musite.ru/index.php/index.php
 
 автор: den4ik87   (17.05.2013 в 17:42)   письмо автору
 
 

Доброго времени суток!
Обнаружил, правда давно, но не придал значения... Но недавно это стало напрягать... Проблема следующая..
При обращении по адресу mysite.ru открывается файл mysite.ru/index.php - это вполне нормально штука... но, также можно открыть файл mysite/index.php/index.php и mysite/index.php/index.php/index.php и т.д. т.е. файл index.php распознается как папка, как сделать чтобы этого не было?
Третий день только и делаю, что ищу информацию по этому поводу, но так и не нашел ничего, может не там искал?
Может кто помочь?

  Ответить  
 
 автор: Jaroslav   (20.05.2013 в 10:09)   письмо автору
 
   для: den4ik87   (17.05.2013 в 17:42)
 

В начале шаблона добавить:


/*  Проверка и редирект  начало */
if (strstr($_SERVER['REQUEST_URI'], "/index.php/")!="") { 
  $NewURL = str_replace("/index.php/", "", $_SERVER['REQUEST_URI']);
  $NewURL = "/".$NewURL;
  header("HTTP/1.1 301 Moved Permanently");  
  header("Location: $NewURL");  
  exit();
}
/*  Проверка и редирект конец */ 

  Ответить  
 
 автор: ols   (20.05.2013 в 16:21)   письмо автору
 
   для: den4ik87   (17.05.2013 в 17:42)
 

А если любое другое написать, кроме Index.php, например test.php, то выдает 404? Если нет, вероятно mod_rewrite у вас настроен таким образом

  Ответить  
 
 автор: Sfinks   (22.05.2013 в 13:02)   письмо автору
 
   для: den4ik87   (17.05.2013 в 17:42)
 

Покажите содержимое вашего файла .htaccess
Интересуют строки, начинающиеся с Rewrite

  Ответить  
 
 автор: Саня   (22.05.2013 в 14:38)   письмо автору
 
   для: den4ik87   (17.05.2013 в 17:42)
 

Это особенность обработки запроса самим PHP интерпретатором.
Веб-сервер проверяет все элементы URI слева направо. Элементы разделяются между собой прямым слешем (символом "/"). Поиск элементов идёт до тех пор, пока не будет найден соответствующий обработчик. Например mod_php для расширения .php
То есть в URI /folder/index.php/index.php/sdjkfhjkasdgjk апач проходит только по пути, выделенному жирным. То есть он дошел до скрипта index.php, убедился что это файл и он существует в директории folder. После чего по расширению файла апач нашел обработчик (mod_php) и передал запрос ему. Всё. Дальше уже область ответственности PHP интерпретатора, которому побоку что указано дальше в URI. Он его дальше не продолжает разбирать.

Если помните, какое-то время у википедии были ссылки типа http://ru.wikipedia.org/index.php/Название_статьи
Это именно тот случай. Апач находит index.php в корне сайта и передаёт запрос ему. Дальше PHP скрипт уже самостоятельно парсит URI, находит название статьи и вытаскивает его из базы.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования