Caddy Web Server 301 Yönlendirme – Regex

Caddy web server son dönemde bütün projelerimizde kullanıyoruz. Kolay konfigürasyon ile zaman kazandırıyor. Caddy Web Server HTTP/3 protokolünü standart olarak kullandığından TCP yerine UDP portundan veri aktarımını yapabildiği için hızlı erişim sağlamaktadır.

Caddy Web Server için Docker üzerinde kurulum dökümanına Caddy Web Server yazımı inceleyebilirsiniz.

Web server üzerinde özellikle SEO ile kazanılmış bazı linkler zamanla değişikliğe uğrayabilir. Bu durumlarda 301 yönlendirme ile arama motorlarına eski linkin yeni yolunu veriyoruz. Belirli bir zaman içinde arama sonuçlarında yeni link aktif olmuş oluyor.

Caddy Web Server ile iki yönlendirme işlemi yapacağız. İlk olarak eski url adresimizi yeni url adresimize 301 ile yönlendireceğiz. Statik bir yönlendirme yapmış olacağız. İkinci olarakta regex yazarak belirli bir formata göre dinamik yönlendirme yapacağız.

Caddy Web Server ile Statik Adres Yönlendirme

Statik yönlendirmeler binlerce olabileceği için bunu normal Caddy Web Server ayar dosyası olan Caddyfile içine almıyorum. Böylelikle dosyanın okunabilirliğini bozmamış ve müdahale ederken görsel olarak temiz bir yapı ile çalışıyoruz. Bundan dolayı yönlendirmeleri başka bir dosyada hazırlayıp Caddyfile dosyasına dahil (import) ediyorum. Dosyayı açmak için nano / vi / mc gibi editörler kullanabilirsiniz. url yönlendirme için redir parametresini kullanacağız.

/data/caddy/config/yonlendirme.conf dosyamızı açıyoruz. Yönlendirmelerin tamamını bir değişkene atıyoruz. (redirection-old-url) Sonrasında ana dosyada bu isimle kolaylıkla ekleme yapacağız.

(redirection-old-url) {
redir /yemek-tarifi/kolay-pogca /yemek-tarifi/kolay-pogaca
redir /yemek-tarifi/patates-yemegi /yemek-tarifi/etsiz-patates-yemegi
redir /reflu-nasil-olusur /bitki-caylari-refluye-iyi-gelir-mi
}

Yönlendirme ayarımız bu kadar kolay. Şimdi Caddy Web Server yapılandırma dosyasına yönlendirme dosyamızı ekliyoruz. /data/caddy/Caddyfile (sizin Caddyfile neredeyse oradan açmalısınız)
dosyanın en üstüne yönlendirme dosyasını ekliyoruz.

import /config/yonlendirme.conf

Caddyfile dosyasında ikinci işlemimiz bu yönlendirmeleri ilgili domain ayar kısmına import etmek.

linuxuzmani.com {
tls /etc/ssl/linuxuzmani_bundle_2023.crt  /etc/ssl/linuxuzmani.key
reverse_proxy http://prodapp:8000
encode zstd gzip
  import redirection-old-url
}

Kaydettikten sonra kullandığınız sunucuya göre Caddy Web Server yeniden başlattığınızda yönlendirme işlemleriniz tamamlanmış oluyor. Artık eski url gitmek istediğinizde sizi yeni adresine yönlendirmiş olacak.

Regex ile 301 Url Yönlendirme

Adresteki belirli bir alanı değiştirerek geri kalan adreslerin otomatik olarak değişmesi içinde ana ayar dosyasımıza aşağıdaki bir regex yönlendirme tanımlaması yapacağız. Bunuda kullanıp istediğimiz Regex Url yönelendirmesini yapacağız.

Caddyfile dosyamıza _regexRedir olarak bir tanımlama ekliyorum.

(_regexRedir) {
@{args.0} {
not file /{path} /{path}/
not path_regexp r {args.1}/.*
path_regexp r ^{args.0}/?(?P<goto>.*)$
}
redir @{args.0} {args.1}/{re.r.goto}
}

Yönlendirme için fonksiyonumuzu yazmış olduk. Artık url tek tek değil path olarak yönlendirebileceğiz. yine domain ayar kısmının içinde bu fonksiyonu kullanacağız ve yönlendirme işlemini tamamlayacağız. Buradaki örnekte forum yapısının değişmesinden dolayı path olarak değişiklik yapacağız. İngilizce isimlerden Türkçe isimlere yönlendirme örneğini bulacaksınız.

linuxuzmani.com {
tls /etc/ssl/linuxuzmani_bundle_2023.crt  /etc/ssl/linuxuzmani.key
reverse_proxy http://prodapp:8000
encode zstd gzip
  import redirection-old-url
import _regexRedir /forum/category /forum/kategori
import _regexRedir /forum/thread /forum/konu
}

Caddy Web Server servisini yeniden başlattığınızda Regex ile Url yönlendirme aktif hale gelecektir.