301 Yönlendirmeleri İçin Regex Kullanımı: Toplu URL Yönlendirme

Web sitelerinde URL yapısı zamanla değişebilir. Blog klasörü güncellenebilir, kategori dizinleri kaldırılabilir, .html uzantıları temizlenebilir, eski ürün URL’leri yeni yapıya taşınabilir ya da site tamamen farklı bir alan adına geçebilir.
Bu tür değişikliklerde eski URL’leri yeni karşılıklarına yönlendirmek, teknik SEO’nun en önemli adımlarından biridir. Çünkü eski URL’ler hâlâ Google’da görünüyor, backlink alıyor veya kullanıcılar tarafından ziyaret ediliyor olabilir.
Az sayıda URL için tek tek 301 yönlendirme yapmak mümkündür. Fakat yüzlerce ya da binlerce URL varsa manuel işlem hem zaman kaybettirir hem de hata riskini artırır. İşte bu noktada Regex, yani düzenli ifadeler devreye girer.
Regex ile 301 yönlendirme, belirli bir URL kalıbına uyan çok sayıda adresi tek bir kuralla yeni yapıya taşımanızı sağlar.
Regex ile 301 Yönlendirme Nedir?
Regex ile 301 yönlendirme, belirli bir URL desenini yakalayarak bu desene uyan tüm sayfaları yeni bir adrese kalıcı olarak yönlendirme işlemidir.
Normal yönlendirme örneği:
/eski-sayfa → /yeni-sayfa
Regex yönlendirme örneği:
/eski-blog/seo-rehberi → /blog/seo-rehberi
/eski-blog/site-tasima → /blog/site-tasima
/eski-blog/regex-yonlendirme → /blog/regex-yonlendirme
Bunun için tek tek üç ayrı yönlendirme yazmak yerine tek bir kural kullanılabilir:
RewriteRule ^eski-blog/(.*)$ /blog/$1 [R=301,L]
Burada (.*) eski URL’deki değişken kısmı yakalar. $1 ise yakalanan bu kısmı yeni URL’ye taşır.
301 Yönlendirme İçin Regex Ne Zaman Kullanılır?
Regex, özellikle URL’ler ortak bir yapıya sahipse çok işe yarar. Her URL farklı ve özel bir karşılığa sahipse manuel yönlendirme daha güvenli olabilir.
| Senaryo | Regex Kullanılır mı? | Örnek |
|---|---|---|
| Alan adı değişikliği | Evet | olddomain.com/* → newdomain.com/* |
| Klasör taşıma | Evet | /old-folder/page → /new-folder/page |
| Blog URL yapısı değişimi | Evet | /blog/2024/yazi → /blog/yazi |
.html uzantısı kaldırma | Evet | /sayfa.html → /sayfa |
| Kategori dizini kaldırma | Evet | /category/urun → /urun |
| Tek sayfa değişimi | Genelde gerekmez | /hakkimizda → /kurumsal |
| Alakasız eski sayfalar | Dikkatli olunmalı | Hepsini ana sayfaya göndermek doğru değildir |
Regex yönlendirme en çok site taşıma, CMS değişikliği, URL sadeleştirme, kategori yapısı güncelleme ve toplu URL düzenleme işlemlerinde kullanılır.
301 Yönlendirme SEO İçin Neden Önemlidir?
301 yönlendirme, bir URL’nin kalıcı olarak başka bir adrese taşındığını bildirir. SEO açısından doğru kullanıldığında eski sayfanın sahip olduğu otorite, backlink değeri ve kullanıcı trafiği yeni sayfaya aktarılabilir.
Doğru yapılandırılmış 301 yönlendirme sayesinde eski URL’lere gelen kullanıcılar 404 hatasıyla karşılaşmaz, backlinklerden gelen değer korunur, Google yeni URL yapısını daha hızlı anlayabilir ve site taşıma sürecinde organik trafik kaybı azaltılabilir.
Ancak burada önemli nokta şudur: Eski URL, mümkün olduğunca en alakalı yeni URL’ye yönlendirilmelidir. Tüm eski sayfaları ana sayfaya yönlendirmek sağlıklı bir SEO stratejisi değildir.
Regex Mantığını Anlamak İçin Temel Karakterler
Regex ilk bakışta karmaşık görünebilir. Fakat 301 yönlendirmelerde en çok kullanılan birkaç karakteri bilmek çoğu senaryo için yeterlidir.
| Regex | Anlamı | Örnek |
|---|---|---|
^ | URL başlangıcı | ^blog |
$ | URL sonu | html$ |
(.*) | Her şeyi yakalar | old/(.*) |
([^/]+) | Slash hariç bir bölümü yakalar | /blog/([^/]+) |
$1 | İlk yakalanan grubu hedefte kullanır | /yeni/$1 |
[0-9]{4} | 4 haneli yıl yakalar | 2024 |
\. | Gerçek nokta karakterini yakalar | .html |
Örneğin aşağıdaki desen, tarihli blog URL’lerini yakalamak için kullanılabilir:
^blog/[0-9]{4}/([^/]+)/?$
Bu desen şu URL’leri yakalayabilir:
/blog/2024/seo-rehberi
/blog/2025/regex-yonlendirme/
Apache .htaccess ile Regex 301 Yönlendirme Örnekleri
Apache sunucularda yönlendirmeler genellikle .htaccess dosyası üzerinden yapılır. Kuralları eklemeden önce dosyanın yedeğini almak önemlidir. Hatalı bir kural site genelinde 500 hatasına neden olabilir.
Eski Klasörü Yeni Klasöre Taşıma
RewriteEngine On
RewriteRule ^old-folder/(.*)$ /new-folder/$1 [R=301,L]
Bu kural şu şekilde çalışır:
/old-folder/page-1 → /new-folder/page-1
/old-folder/urun/test → /new-folder/urun/test
Blog, kategori, ürün ya da rehber klasörü değişikliklerinde bu yapı kullanılabilir.
Blog URL’lerinden Yıl Bilgisini Kaldırma
RewriteEngine On
RewriteRule ^blog/[0-9]{4}/([^/]+)/?$ /blog/$1/ [R=301,L]
Bu kural:
/blog/2024/teknik-seo
adresini:
/blog/teknik-seo/
adresine yönlendirir. Tarihli blog URL’lerinden daha sade ve evergreen URL yapısına geçmek isteyen siteler için uygundur.
.html Uzantısını Kaldırma
RewriteEngine On
RewriteRule ^(.+)\.html$ /$1 [R=301,L]
Bu kural şu dönüşümü yapar:
/hakkimizda.html → /hakkimizda
/blog/seo.html → /blog/seo
Buradaki \. önemlidir. Çünkü Regex’te nokta özel bir karakterdir. Gerçek nokta karakterini yakalamak için \. şeklinde yazılır.
Kategori Dizinini Kaldırma
RewriteEngine On
RewriteRule ^category/(.*)$ /$1 [R=301,L]
Örnek:
/category/elbise → /elbise
/category/blog/seo → /blog/seo
Bu yöntem WordPress kategori tabanı kaldırma, e-ticaret kategori yapısı sadeleştirme veya eski CMS dizinlerini temizleme işlemlerinde kullanılabilir.
Sondaki Slash Eklemek
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\.[a-zA-Z0-9]{2,5}$
RewriteCond %{REQUEST_URI} !/$
RewriteRule ^(.+)$ /$1/ [R=301,L]
Bu kural dosya olmayan ve uzantı içermeyen URL’lerin sonuna slash ekler:
/blog/seo → /blog/seo/
/kategori → /kategori/
Sitenizin canonical URL yapısı slash’lı mı, slash’sız mı önce buna karar verilmelidir. İki yapı aynı anda çalışırsa kopya URL ve yönlendirme karmaşası oluşabilir.
Alan Adı Değişikliği
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.com$ [NC]RewriteRule ^(.*)$ https://www.newdomain.com/$1 [R=301,L]
Bu kural eski alan adındaki tüm URL’leri aynı path yapısını koruyarak yeni domaine taşır:
https://olddomain.com/blog/seo
→
https://www.newdomain.com/blog/seo
Alan adı değişimlerinde sadece yönlendirme yapmak yeterli değildir. Aynı zamanda iç linkler, canonical etiketleri, sitemap dosyası ve Search Console ayarları da güncellenmelidir.
Nginx ile Regex 301 Yönlendirme Örnekleri
Nginx sunucularda yönlendirmeler genellikle sunucu yapılandırma dosyası içinde yapılır. Apache’deki .htaccess mantığından farklıdır.
Eski Alan Adını Yeni Alan Adına Taşıma
server {
listen 80;
server_name olddomain.com www.olddomain.com;
return 301 https://www.newdomain.com$request_uri;
}
Bu yapı, eski domain üzerindeki tüm URL’leri yeni domaine aynı path ile taşır.
/urun/keten-elbise
→
https://www.newdomain.com/urun/keten-elbise
Eski Klasörü Yeni Klasöre Taşıma
location ~ ^/old-folder/(.*)$ {
return 301 /new-folder/$1;
}
Örnek:
/old-folder/page → /new-folder/page
.html Uzantısını Kaldırma
rewrite ^/(.*)\.html$ /$1 permanent;
Örnek:
/sayfa.html → /sayfa
Nginx’te yanlış yapılandırmalar tüm siteyi etkileyebileceği için canlıya almadan önce mutlaka test edilmelidir.
WordPress’te Regex ile 301 Yönlendirme
WordPress sitelerde Regex yönlendirme için üç farklı yöntem kullanılabilir: .htaccess dosyası, sunucu yapılandırması veya SEO/redirect eklentileri.
Kod yazmak istemeyen kullanıcılar için Redirection, Rank Math veya SEOPress gibi eklentiler daha kolay bir çözüm sunar.
Redirection Eklentisi Örneği
Kaynak URL:
^/eski-kategori/(.*)
Hedef URL:
/yeni-kategori/$1
Sonuç:
/eski-kategori/urun-adi → /yeni-kategori/urun-adi
Bu işlem yapılırken eklenti içinde Regex seçeneğinin aktif olduğundan emin olunmalıdır.
Rank Math Regex Redirect Örneği
Kaynak:
^/blog/([0-9]{4})/(.*)
Hedef:
/blog/$2
Sonuç:
/blog/2024/teknik-seo → /blog/teknik-seo
Burada $2, ikinci yakalama grubunu temsil eder. İlk grup yıl bilgisidir, ikinci grup ise yazı slug’ıdır.
En Sık Kullanılan Regex 301 Senaryoları
Aşağıdaki tablo, en çok kullanılan toplu yönlendirme örneklerini özetler.
| Senaryo | Kaynak Regex | Hedef |
|---|---|---|
| Klasör taşıma | ^old-folder/(.*)$ | /new-folder/$1 |
| Blog yılını kaldırma | ^blog/[0-9]{4}/([^/]+)/?$ | /blog/$1/ |
.html kaldırma | ^(.+)\.html$ | /$1 |
| Kategori tabanı kaldırma | ^category/(.*)$ | /$1 |
| Ürün dizini değiştirme | ^product/(.*)$ | /urun/$1 |
| Dil klasörü kaldırma | ^tr/(.*)$ | /$1 |
| Slash ekleme | ^(.+)$ | /$1/ |
| Tek seviyeli slug taşıma | ^eski-blog/([^/]+)/?$ | /blog/$1/ |
Bu kurallar doğrudan kopyalanmadan önce sitenin URL yapısına göre uyarlanmalıdır. Çünkü her CMS, her sunucu ve her permalink yapısı farklı çalışabilir.
Regex ile 301 Yönlendirme Yaparken SEO Kuralları
Regex ile 301 yönlendirme, teknik SEO açısından güçlü bir yöntemdir. Ancak yönlendirme kurallarının genişliği, hedef URL seçimi ve test süreci doğru planlanmazsa SEO performansını olumsuz etkileyebilir.
Kalıcı Değişikliklerde 301 Kullanın
URL değişikliği kalıcıysa 301 yönlendirme kullanılmalıdır. 302 geçici yönlendirmedir. Site taşıma, kategori değişimi, URL sadeleştirme ve alan adı geçişlerinde 301 daha doğru tercihtir.
Eski URL’yi En Alakalı Yeni URL’ye Gönderin
Yanlış kullanım:
/eski-blog/teknik-seo → /
Doğru kullanım:
/eski-blog/teknik-seo → /blog/teknik-seo/
Tüm eski sayfaları ana sayfaya yönlendirmek SEO açısından sağlıklı değildir. Bu durum kullanıcı deneyimini bozar ve arama motorları tarafından alakasız yönlendirme gibi algılanabilir.
Redirect Chain Oluşturmayın
Yanlış yapı:
/eski-url → /orta-url → /yeni-url
Doğru yapı:
/eski-url → /yeni-url
Yönlendirme zincirleri sayfa açılışını yavaşlatır, tarama verimliliğini düşürür ve teknik SEO sorunlarına neden olabilir.
Redirect Loop’a Dikkat Edin
Redirect loop, bir URL’nin sürekli başka bir URL’ye, ardından tekrar ilk URL’ye yönlenmesi durumudur.
/sayfa → /sayfa/
→ /sayfa
→ /sayfa/
Bu genellikle slash ekleme/kaldırma kurallarının yanlış yazılmasından kaynaklanır. Tarayıcıda “too many redirects” hatası oluşur.
Regex Kurallarını Fazla Geniş Yazmayın
Riskli desen:
^(.*)$
Daha güvenli kullanım:
^eski-blog/([^/]+)/?$
Regex ne kadar dar ve net yazılırsa hata riski o kadar azalır.
Query String Davranışını Kontrol Edin
Eski URL şu şekilde olabilir:
/urun.php?id=123
Yeni yapı şöyle olabilir:
/urun/123
Apache örneği:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^id=([0-9]+)$
RewriteRule ^urun\.php$ /urun/%1? [R=301,L]
Burada %1, query string içindeki ID değerini yakalar. En sondaki ?, eski parametrenin yeni URL’ye taşınmasını engeller.
Görsel, CSS ve JS Dosyalarını Yanlışlıkla Yönlendirmeyin
Çok genel yazılan kurallar şu dosyaları bozabilir:
.css
.js
.jpg
.png
.webp
.svg
.pdf
.xml
Bu nedenle slash ekleme, uzantı kaldırma veya genel yönlendirme kuralları yazılırken statik dosyalar hariç tutulmalıdır.
Canlıya Almadan Önce Test Listesi
Regex yönlendirme mutlaka test edilmelidir. Küçük bir hata binlerce URL’yi etkileyebilir.
| Kontrol | Neden Önemli? |
|---|---|
| Regex test aracıyla kontrol | Desenin doğru URL’leri yakalayıp yakalamadığını görürsünüz |
| 10-20 örnek URL testi | Gerçek senaryoda kuralı doğrularsınız |
| Staging ortamında deneme | Canlı siteyi riske atmadan test edersiniz |
| Crawl testi | 301, 404, 500, loop ve chain hatalarını bulursunuz |
| Query string testi | Parametrelerin doğru taşındığını kontrol edersiniz |
| Canonical kontrolü | Yeni URL’nin kendisini canonical gösterdiğinden emin olursunuz |
| Sitemap güncellemesi | Arama motorlarına yeni URL yapısını bildirirsiniz |
| Search Console takibi | Tarama ve dizinleme sorunlarını izlersiniz |
Regex 301 Yönlendirmede En Yaygın Hatalar
Regex yönlendirmede yapılan hatalar genellikle küçük görünür; ancak etkisi site geneline yayılabilir. Bu nedenle özellikle toplu yönlendirme kuralları yayınlanmadan önce aşağıdaki hatalara dikkat edilmelidir.
Tüm Eski URL’leri Ana Sayfaya Yönlendirmek
Bu en sık yapılan hatalardan biridir. Eski sayfanın yeni sitede alakalı bir karşılığı varsa oraya yönlendirilmelidir. Karşılığı yoksa en yakın kategoriye yönlendirmek düşünülebilir. Hiçbir alakalı sayfa yoksa 404 veya 410 daha doğru olabilir.
Yeni URL’nin de Aynı Kurala Yakalanması
Eski klasörü yeni klasöre taşırken yeni URL de aynı Regex desenine takılıyorsa sonsuz yönlendirme oluşabilir. Bu yüzden kaynak desen mümkün olduğunca net yazılmalıdır.
Dahili Linkleri Güncellememek
301 yönlendirme kurmak tek başına yeterli değildir. Site içindeki linkler hâlâ eski URL’lere gidiyorsa kullanıcı ve bot gereksiz yere yönlendirmeye maruz kalır.
Doğru yapı şöyle olmalıdır:
Eski URL → 301 → Yeni URL
Dahili linkler → Yeni URL
Canonical → Yeni URL
Sitemap → Yeni URL
Yönlendirme Kurallarını Yanlış Sıraya Koymak
Genel kurallar üstte, özel kurallar altta olursa özel URL’ler daha genel kurala yakalanabilir. Bu yüzden genellikle önce spesifik kurallar, sonra genel kurallar yazılmalıdır.
Önerilen sıra:
1. Kritik tekil URL yönlendirmeleri
2. Klasör/kategori yönlendirmeleri
3. Uzantı kaldırma kuralları
4. Slash normalizasyonu
5. Domain / www / HTTPS kuralları
6. En genel catch-all kurallar
Örnek Site Taşıma Planı
Regex ile 301 yönlendirme yapılacaksa süreç planlı ilerlemelidir.
| Aşama | Yapılacak İşlem |
|---|---|
| 1 | Eski URL listesini çıkarın |
| 2 | URL’leri blog, kategori, ürün, etiket, medya gibi gruplara ayırın |
| 3 | Regex ile çözülebilecek URL kalıplarını belirleyin |
| 4 | Kritik sayfalar için birebir yönlendirme planı hazırlayın |
| 5 | Kuralları test ortamında deneyin |
| 6 | Canlıya aldıktan sonra crawl yapın |
| 7 | 404, 500, chain ve loop hatalarını düzeltin |
| 8 | Sitemap ve canonical yapılarını güncelleyin |
| 9 | Search Console üzerinden süreci takip edin |
| 10 | Yönlendirmeleri uzun süre aktif tutun |
301 Yönlendirme ve Regex Hakkında Sık Sorulan Sorular
Regex ile 301 yönlendirme nedir?
Regex ile 301 yönlendirme, belirli bir URL kalıbına uyan birden fazla adresi tek bir kuralla kalıcı olarak yeni URL yapısına taşıma işlemidir. Özellikle yüzlerce veya binlerce URL’nin aynı mantıkla yönlendirilmesi gereken site taşıma, CMS değişikliği ve URL sadeleştirme süreçlerinde kullanılır.
301 yönlendirmelerinde Regex ne zaman kullanılmalı?
Regex, URL’ler ortak bir yapıya sahipse kullanılmalıdır. Örneğin eski bir klasörün yeni klasöre taşınması, .html uzantılarının kaldırılması, blog URL’lerinden yıl bilgisinin çıkarılması veya kategori dizinlerinin sadeleştirilmesi gibi durumlarda Regex yönlendirme oldukça kullanışlıdır.
301 yönlendirme SEO’ya zarar verir mi?
Doğru yapılandırılmış 301 yönlendirme SEO’ya zarar vermez; aksine eski URL’lerin değerini yeni URL’lere aktarmaya yardımcı olur. Ancak eski sayfaları alakasız hedeflere yönlendirmek, tüm URL’leri ana sayfaya göndermek, yönlendirme zinciri veya yönlendirme döngüsü oluşturmak SEO performansını olumsuz etkileyebilir.
301 mi 302 mi kullanılmalı?
URL değişikliği kalıcıysa 301 yönlendirme kullanılmalıdır. 302 yönlendirme geçici durumlar için uygundur. Site taşıma, alan adı değişikliği, kategori yapısı güncelleme veya kalıcı URL değişikliklerinde 301 yönlendirme daha doğru bir teknik SEO tercihidir.
Regex yönlendirme canlıya alınmadan önce nasıl test edilmeli?
Regex yönlendirme canlıya alınmadan önce mutlaka test edilmelidir. Önce Regex test aracıyla desen kontrol edilmeli, ardından staging ortamında örnek URL’ler denenmelidir. Canlıya aldıktan sonra 301, 404, 500, redirect chain ve redirect loop kontrolleri yapılmalı; Search Console üzerinden tarama hataları takip edilmelidir.



