Öncelikle şunu söyleyim HTTP_REFERER çok güvenli bulunmayan bir yöntemdir. Bunu php .net den de teyit edebilirsin.
Ben REQUEST_URI ile bir önceki sayfanın tam adresini bir sessiona kaydediyorum ve geri gelme ihtiyacı olduğunda bu sessionu kullanıyorum. Senin istediğin 1 2 3 önceki sayfa içinde aynı şekilde bütün yol ağacını kaydederek ulaşabilirsin.
Senin sorularına gelecek olursak;
$url = htmlspecialchars($_SERVER['HTTP_REFERER']);
echo "back";
?>
Burada htmlspecialchars kullanmasının nedeni karakterleri etkisizleştimek olası bir slq injection önüne geçmek.
$referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
Burada da if in kısa halini kullanıyor, uzun hali aşağıdaki gibi
if(isset($_SERVER['HTTP_REFERER'])){$referer = $_SERVER['HTTP_REFERER']}
Yani burası ilk sayfa değilse $referer değişkenine sayfayı atayacak, ilk sayfa ise HTTP_REFERER boş dönecek.
-------
header('Location: ' . $_SERVER['HTTP_REFERER']);
bunun sonuna da şu şekilde ekleme yapabilirsin.
header('Location: ' . $_SERVER['HTTP_REFERER'].'/eklenecek_adres');
yada eklenecek adresi değişkene atayıp da ekleyebilirsin.
Umarım yazdıklarım yardımcı olur.