В каком порядке обрабатываются редиректы на сайтах?
Внезапно из практики выяснил, что может быть так, что редиректы на php обрабатываются сначала, а в .htaccess потом. Я всегда считал, что htaccess сначала, очевидно, неправильно. А ведь есть ещё nginx, cloudflare и, может быть, ещё что-то. Посоветуйте, пожалуйста, хорошую статью про это или объясните так, если возможно. В гугле вижу мягко говоря непрофессиональные ответы.
В общем случае, кто ближе к пользователю тот и раньше (т.е. сначала CF, потом веб-сервер, потом PHP), но при желании и/или должной кривизне рук наверняка можно наворотить странного.
Ну и неплохо бы понимать как работает http в принципе.
"т.е. сначала CF, потом веб-сервер, потом PHP" -- я тоже так думал. Столкнулся на wp, не работали редиректы 301, установленные в htaccess - установил плагин redirection и только через него всё стало переадресовывать. Я подозреваю, что у htaccess "отобрал силы" какой-то другой плагин, который уже был установлен, либо был удалён ранее, но на деле не знаю.
не работали редиректы 301, установленные в htaccess
Ну это же не подробности а так общие фразы.
Какие правила и как ставили. Правила проверяются последовательно и если поставить редирект после правил wp, то работать не будет. Ещё могли быть просто ошибки в шаблоне и правила не срабатывали как ожидалось.
Так что нужно глянуть весь .htaccess тогда уже будет больше конкретики.
Редиректы образовываютя по ходу запроса от клиента.
Не со стороны сервера а как клиент получет контент.
1. Соответственно в начале claudflare посколкьу он до сайта а отвечает еще за ДНС, соответственно уже там могут быть редиректы.
2. Он добирается до nginx и тут начинает делать магию уже он,
3. Потом он добирается до apache который делает свои редиректы ( конечно если он вообще есть, но тогда и htaccess читать вообще некому)
4. Добирается запрос до языка скажем до php там уже могу быть редиректы в твоем движке.
Из особенностей не забывай что .htaccess читается сверху вниз в цикл бесконечно !!!!
то есть пока урлы не устаканятся и не удовлетворят всем услвиям они продолжат меняться.
Чтение сверху вниз!
и да [L] это не то что ты думаешь.
Теперь по твоему вопросу про пхп до .htaccess
нет не обрабатываются если нет эксклюзивных ответвлений.
К примеру site.ru/phpmyadmin может рбрабатывать редиректы до твоего .htassess поскольку это вообще другйо сайт и другой конфиг у которого нет твоего .htaccess
Может быть эсклюзив когд php делает прокси такое тоже имеет место бытьт и порой толькто этот вариант подходит.
В таком случае пхп забирает контент с бэка меняет его и выдает уже тебе. в таком случае он будет до .htaccess
но как понимаешь это эксклюзив.
К примеру если тебе нужно чтоб новые урлы сайта были на новом движке а старые урлы если этого урал нет в новом, то брать со старого сайта.
Ты в 404.php пихаеш проксю и вместо 404 ты пытаешся еще достать 200 и если его и там нет то даеш 404. но это костыли и это не стандарт.
Ну и да если у тебя nginx+apache+fastcgi или FPM в конце
то у тебя не будут работать некоторые директивы в .htassess к примеру php_value* и php_fla*8 php_admin* но это не редиректы.
А вот если у тебя ngixn +FPM то .htaccess вообще читаться не будет ибо nginx вообще не знает такого файла