Как закрыть доступ на shop/product.php если генерируется страницы товаров со ссылкой shop/product.php?id=1?
Попробуйте переформулировать вопрос ибо почти ничего не понятно.
Вам нужно чтобы открывались страницы продуктов, если есть параметр id в url, но если параметра нет, то выдавалась, ошибка?
Проверка на существование переменной: php.net/function.isset
Проверка, что в переменной не пусто: php.net/function.empty
Отправка нужного заголовка (например, что запрашиваемая страница не существует): php.net/manual/ru/function.header.php
Прерывание работы скрипта:  php.net/manual/ru/function.exit.php
// если передан id.
if(!empty($_GET['id']))
       // выполняем какой-то код
else
     header('Location: http://natribu.org/');
     exit(); // обязательно! т.к. может выполняться идущий за перенаправление код