|
|
|
| Доброго времени суток!
Обнаружил, правда давно, но не придал значения... Но недавно это стало напрягать... Проблема следующая..
При обращении по адресу mysite.ru открывается файл mysite.ru/index.php - это вполне нормально штука... но, также можно открыть файл mysite/index.php/index.php и mysite/index.php/index.php/index.php и т.д. т.е. файл index.php распознается как папка, как сделать чтобы этого не было?
Третий день только и делаю, что ищу информацию по этому поводу, но так и не нашел ничего, может не там искал?
Может кто помочь? | |
|
|
|
|
|
|
|
для: 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();
}
/* Проверка и редирект конец */
|
| |
|
|
|
|
|
|
|
для: den4ik87
(17.05.2013 в 17:42)
| | А если любое другое написать, кроме Index.php, например test.php, то выдает 404? Если нет, вероятно mod_rewrite у вас настроен таким образом | |
|
|
|
|
|
|
|
для: den4ik87
(17.05.2013 в 17:42)
| | Покажите содержимое вашего файла .htaccess
Интересуют строки, начинающиеся с Rewrite | |
|
|
|
|
|
|
|
для: 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, находит название статьи и вытаскивает его из базы. | |
|
|
|