|
|
|
(.htaccess) Странный редирект. Часть 1
|
|||
|---|---|---|---|
|
#18+
Провёл вот такой эксперимент. В корне сайта создал файл test (без расширения). Далее там же (в корне сайта) создаю .htaccess со следующим редиректом: Код: sql 1. 2. 3. 4. 5. Этот редирект любые запросы /test или /test/... к несуществующим файлам и папкам должен перенаправлять на главную страницу сайта. Что в итоге наблюдаем: При запросе страницы www.site.ru/test/ либо www.site.ru/test (в последнем случае браузер сам добавляет слэш после "test") получаем стандартную 404 страницу Apache. Т.е. наш редирект не сработал. Если убрать директивы Код: sql 1. 2. то наш редирект начинает работать - идёт перенаправление на главную страницу сайта. Вопрос: какого хрена происходит ? Если Apache считает, что запрошенной папки test/ не существует, то почему не срабатывают директивы RewriteCond %{REQUEST_FILENAME} !-f и RewriteCond %{REQUEST_FILENAME} !-d (не выполняется редирект на главную страницу сайта) ? Если же Apache считает, что запрошенная папка/файл test/ существует, то почему не выводится содержимое файла test ? (вместо этого загружается 404 страница). Ну ведь надо же как-то определиться... Или нет ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2015, 19:45 |
|
||
|
(.htaccess) Странный редирект. Часть 1
|
|||
|---|---|---|---|
|
#18+
Проверил в Firefox, Safari и Chrome - поведение одинаково. С той лишь разницей, что Safari не добавляет слэш после test (впрочем, это должно регулироваться настройками). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2015, 19:56 |
|
||
|
(.htaccess) Странный редирект. Часть 1
|
|||
|---|---|---|---|
|
#18+
Слеш в конце означает, что последний компонент пути является директорий, в которой пойдёт обращение к индексному файлу. Таким образом, выходит, что файл test и не запрашивается. А вот почему браузер "сам" добавил слеш в конце - это вопрос. Думаю, что ему кто-то помог. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2015, 20:14 |
|
||
|
(.htaccess) Странный редирект. Часть 1
|
|||
|---|---|---|---|
|
#18+
Также обратил внимание, что в Safari (который "не добавляет слэш в конце файлов без расширения" ) наблюдается такая картина: 1) Если в корне сайта лежит файл test , то запрос www.site.ru/test (без слэша) остаётся без изменений (загружается содержимое файла) 2) Если в корне сайта лежит файл test , то запрос www.site.ru/test/ (со слэшем) изменяется на www.site.ru/test (без слэша) и загружается содержимое файла 3) Если в корне сайта лежит каталог test/ , то запрос www.site.ru/test/ (со слэшем) остаётся без изменений 4) Если в корне сайта лежит каталог test/ , то запрос www.site.ru/test (без слэша) тоже остаётся без изменений (загружается стандартная 404 страница) Данное поведение можно объяснить только тем, что в случае запроса каталога www.site.ru/test/ (со слэшем) веб-сервер проверяет наличие каталога и если его нет, но есть одноимённый файл, возвращает клиенту (браузеру) редирект из 300-й серии на одноимённый файл www.site.ru/test (без слэша). Далее браузер сразу же отправляет новый запрос уже без слэша. Если это действительно так (веб-сервер в указанном случае отправляет клиенту редирект из 300-й серии), то почему этого не происходит в случае с Firefox и Chrome ? В этих браузерах поведение идентично Safari, но в адресной строке слэш "не убирается" (при наличии одноимённого файла на сервере). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2015, 20:20 |
|
||
|
(.htaccess) Странный редирект. Часть 1
|
|||
|---|---|---|---|
|
#18+
авторА вот почему браузер "сам" добавил слеш в конце - это вопрос. Думаю, что ему кто-то помог. Проверил. Получается так. Некоторые браузеры (возможно, - настройки) к файлам без расширения добавляют слэш (сразу же, перед отправкой запроса серверу). Некоторые браузеры - не добавляют. В результате, к файлу без расширения (физически существующему на сервере) можно получить доступ только через те браузеры, которые не добавляют слэш к файлам без расширения (в данном случае - Safari). Но одновременно с этим работает и редирект веб-сервера из 300 серии на тот же адрес без слэша, если вместо каталога существует одноимённый файл (поведение описал в предыдущем посте). В этом случае слэш убирается не сразу, а через долю секунды (проходит время на получение редиректа от сервера). Т.е. одновременно работают оба этих "механизма". В итоге понимание логики слэшей существенно усложняется... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2015, 20:30 |
|
||
|
(.htaccess) Странный редирект. Часть 1
|
|||
|---|---|---|---|
|
#18+
На текущий момент остаются нерешёнными вот эти 2 вопроса: Вопрос 1 авторНо одновременно с этим работает и редирект веб-сервера из 300 серии на тот же адрес без слэша, если вместо каталога существует одноимённый файл (поведение описал в предыдущем посте). В этом случае слэш убирается не сразу, а через долю секунды (проходит время на получение редиректа от сервера).Тогда почему в указанном случае (вместо каталога существует одноимённый файл) в Firefox и Chrome слэш не убирается и содержимое файла test не отображается (вместо этого получаем 404 страницу) ? Не может же веб-сервер отправлять этот редирект браузеру Safari, но не отправлять браузерам Firefox и Chrome... Вопрос 2 (из первого поста) Если Apache считает, что запрошенной папки test/ не существует, то почему не срабатывают директивы RewriteCond %{REQUEST_FILENAME} !-f и RewriteCond %{REQUEST_FILENAME} !-d (не выполняется редирект на главную страницу сайта) ? Если же Apache считает, что запрошенная папка/файл test/ существует, то почему не выводится содержимое файла test ? (вместо этого загружается 404 страница). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2015, 20:37 |
|
||
|
|

start [/forum/topic.php?fid=25&fpage=34&tid=1482208]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
| others: | 245ms |
| total: | 394ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...