Nginx’te belirli URL’lerden gelen 404 isteklerini ana sayfaya yönlendirmek için map yöntemini kullanabiliriz. Bu yöntem, belirli URL kalıplarını tanımlamanıza ve bunları ana sayfaya yönlendirmenize olanak tanır. Üstelik normalden daha performanslı çalışarak NGINX üzerindeki süreçlerde sorun yaşatmaz.
Önce http bloğu içerisine aşağıdaki tanımlamayı yapın. bu bizim kullanacağımız mapping olacak. Tüm değişikliği burada yapacağız. nginx.conf
sırf bunun için düzenleme yapmak istemezseniz. conf.d
klasörü içerisine ekleyin ve bunu nginx.conf
da çağırarak kullanın.
map $request_uri $redirect_to_home
{
default 0;
~^/eski-sayfa/.*$ 1;
~^/artik-kullanilmayan/.*$ 1;
/404/ 1;
}
Nginxmap
direktifi ile$redirect_to_home
adında bir değişken tanımlıyoruz. Bu değişken, hangi URL’lerin ana sayfaya yönlendirileceğini belirler.map
içinde:default 0;
ile varsayılan değeri 0 olarak ayarlıyoruz. Yani, özel olarak belirtilmeyen URL’ler yönlendirilmeyecek.~^/eski-sayfa/.*$ 1;
ile/eski-sayfa/
ile başlayan tüm URL’leri yönlendirmeye dahil ediyoruz.~^/artik-kullanilmayan/.*$ 1;
ile/artik-kullanilmayan/
ile başlayan tüm URL’leri yönlendirmeye dahil ediyoruz./404/ 1;
ile doğrudan 404 sayfasına yapılan istekleri de yönlendiriyoruz.
404 isteklerini işleyebilmek için aşağıdaki değişikliği vhost dosyanız içerisine ekleyin.
error_page 404 = @handle_404;
location @handle_404
{
if ($redirect_to_home = 1)
{
return 301 /;
}
return 404;
}
Nginxerror_page 404 = @handle_404;
ile 404 hatalarını @handle_404
adlı bir konuma yönlendiriyoruz.
@handle_404
içinde if ($redirect_to_home = 1) ile map direktifinde 1 olarak işaretlenen URL’leri kontrol ediyoruz. Eğer koşul sağlanıyorsa, return 301 /; ile ana sayfaya kalıcı bir yönlendirme yapıyoruz. Koşul sağlanmıyorsa, normal 404 hatasını döndürüyoruz.