И так, господа, доброй ночи. Создаю тему именно в этом разделе, так как понимаю как это выглядит со стороны Полный нуб в PHP, у меня имеется: 1) Сайт на Wordpress посл. версии 2) Вопрос. Вопрос вот в чем: Как сделать так, что бы при переходе на мой сайт (www.test.com) по ссылке с сайтов - (site1.com; site2.com; site3.com) - пользователя автоматом редиректит на www.google.com При любых других переходах - пользователь попадает на целевую страницу. Я так понимаю нужен код и его нужно вставить в HEADER страницы. Форум курил, похожие темы читал, но там свои особенности которые не подходят к моему случаю. Буду весьма благодарен любому, кто окажет помощь! Спасибо заранее!
Можно в index.php вставить самым первым, блок if где в $_SERVER['HTTP_REFERER'] искать нужные сайты с которых ждёшь переход и при нахождении уже перебрасывать на гугл
Также стоит учитывать что некоторые сайты могут не отдавать $_SERVER['HTTP_REFERER'] , и переход будет с хз какого рефера
А хуки для кого придумали? ) Предлагаю более эстетический вариант. Повесить всё на хук init. В вордпрессе есть mu-plugins. Нужно создать папку mu-plugins в папке wp-content. В папке mu-plugins создаём файл googleredirect.php с таким содержимым: PHP: <?php add_action( 'init', 'google_redirect' ); function google_redirect() { if (isset($_SERVER['HTTP_REFERER'])) { $parse_url = parse_url($_SERVER['HTTP_REFERER']); //Разбираем на массив url, чтобы получить чисто домен switch ($parse_url['host']) { case "site1.com": case "site2.com": case "site3.com": header("location: https://www.google.ru"); //редиректим break; } } } ?> Готово. Рефер отдаёт браузер.
Спасибо за помощь, так и сделал. После чего в разделе Header.php, после тега <body> прописываю: PHP: <?php require "/wp-content/mu-plugins/googleredirect.php"; ?> И страница тупо не загружается, просто белый экран. Независимо - захожу я просто на страницу или с реферром указанным в файле googleredirect.php.
А зачем? Этого не нужно делать, вордпресс сам подцепит файлы из mu-plugins и заставит всё работать. А ещё, заголовки нельзя передавать после того, как страница начала грузиться. А функция header это и делает, отдаёт заголовки. Т.е. нельзя даже так: Код (Text): <?php echo "1"; header(ТУТЧТОНИБУДЬ); ?> Ни о каких body и речи не может быть. ) Поэтому и используется хук init.
Странно, залил файл googleredirect.php по пути мойсайт.ком/wp-content/mu-plugins/googleredirect.php И ничего не происходит. Может мне нужно плагин какой-то установить? Простите что так туплю
Не. mu-plugins - это стоковая по умолчанию фишка вордпресса. Вы уверены, что рефер не пустой и подходит под условия? В условиях не должно быть ничего, кроме доменов. Т.е. только выделенная часть: http://mysite.ru/?a=b&c=d Чтобы проверить, пустой ли рефер, давайте попробуем добавить вар_дамп сразу после if. PHP: if (isset($_SERVER['HTTP_REFERER'])) { var_dump($_SERVER['HTTP_REFERER']); Результат могут перекрыть части темы, поэтому лучше смотреть в код. Всё точно работает, проверил перед публикацией.
Добавил, да, тему немного разорвало, но реффер присутствует: Код (Text): string(27) "https://test.com/s/UMk44/" Может проблема в том что HTTPS? Потому что хоть убей, просто не редиректит.
Не, протокол тут не при делах. Его не нужно указывать в конструкции case. Его нужно указывать только в header, в котором редирект.
Даже тему сбросил на стандартную, в Installed Plugins видно что ВП видит этот скрипт Такие права доступа на файл установлены: И все равно, при входе на сайт по любому из трех указанных мною рефферов в виде "site.com" ничего не происходит Еще добавлю, специально для теста отключил все активные плагины которые были установлены, на ситуацию не влияет.
хреновый ты какой-то. пхп-скрипты в 99.9% случаев отрабатываются пхп-машиной по запросу веб-сервера а не в терминальном режиме, следовательно права доступа с битом исполнения им явно не нужны. 644 - вполне адекватно. А еще лучше - 640. Или даже 440. Или 400. да хоть LoCaTiON - названия заголовков регистронезависимые. Как и названия хостов. Как и логины.
я за 440, потому что заливаются они у меня обычно под одним юзером, а исполняются под пхпшным входящим в группу www прост