Справочники, инструменты, документация

PHP: Запрещаем дописывать GET параметры к URL

Кто не в курсе, проверьте у себя: добавьте к любой странице знак `?` и наберите дальше что угодно, ту же абракадабру.

Как ни странно, такая страница открывается и отдает код ответа сервера 200 ок. Если злоумышленник поставит ссылку на такую страницу, поздравляю, у вас в индексе появится полноценный дубль! И таких сюрпризов можно создать тысячи! Самый простой способ вам отомстить за что-то или просто подвинуть как конкурента...

// если запрос начинается с ?s= — это поиск по сайту, разрешаем
if ( '/?s=' != substr($_SERVER['REQUEST_URI'], 0 ,4) && empty($_GET['preview']) ) {
// теперь проверим ситуацию с прочими запросами
$t = explode('?', $_SERVER['REQUEST_URI']);
// есть get-параметры
if ( ! empty($t[1]) ) {
// редиректим на адрес
header('Location: ' . $t[0], 1, 301);
exit;
}
}