Ana içeriğe geç

Apache mod_rewrite Kurulumu ve URL Yeniden Yazma (Ubuntu 22.04)

Bu rehberde Apache web sunucusunda mod_rewrite modülünü etkinleştirip
.htaccess dosyası ile SEO uyumlu ve kullanıcı dostu URL yapıları oluşturmayı öğreneceksiniz.
Basit yönlendirmelerden koşullu kurallara kadar pratik örneklerle ilerliyoruz.


🧠 Teknik Özet

Ana konu: Apache mod_rewrite ile URL yeniden yazma
Çözdüğü problem:

  • Uzun, karmaşık query string URL’leri sadeleştirme
  • SEO ve kullanıcı deneyimini iyileştirme
  • Dosya yollarını gizleme

İzlenen adımlar:

  • mod_rewrite modülünü etkinleştirme
  • .htaccess kullanımını AllowOverride ile açma
  • RewriteRule ve RewriteCond ile yönlendirme kuralları yazma

✅ Ön Gereksinimler

  • Ubuntu 22.04 kurulu bir sunucu (örnek: rabisu.cloud)
  • sudo yetkisine sahip kullanıcı
  • Apache Web Sunucusu kurulu olmalı

1️⃣ mod_rewrite Modülünü Etkinleştirme

  • Apache’nin yeniden yazma kurallarını okuyabilmesi için modül aktif olmalıdır.
sudo a2enmod rewrite
  • Bu komut mod_rewrite modülünü aktif eder.

sudo systemctl restart apache2
  • Bu komut Apache servisinin yeniden başlamasını sağlar.

2️⃣ .htaccess Kullanımına İzin Verme

  • Apache varsayılan olarak .htaccess dosyalarını yok sayar.
  • İzin vermek için VirtualHost yapılandırmasını düzenlemeliyiz.

sudo nano /etc/apache2/sites-available/000-default.conf
  • Aşağıdaki bloğu ekleyin:

<VirtualHost *:80>
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
  • Bu ayar .htaccess kurallarını geçerli kılar.


sudo systemctl restart apache2

3️⃣ .htaccess Dosyasını Oluşturma


sudo nano /var/www/html/.htaccess
  • Rewrite motorunu aktif edin:

RewriteEngine on

Bu satır URL yeniden yazmayı başlatır.


4️⃣ Temel URL Rewrite Örneği

1. Amaç:

  • /hakkimizda → hakkimizda.html

sudo nano /var/www/html/hakkimizda.html

<html>
<head>
<title>Hakkımızda</title>
</head>
<body>
<h1>Rabisu Bulut Hakkında</h1>
</body>
</html>

2. Şimdi .htaccess dosyasına kuralı ekleyelim:


RewriteEngine on
RewriteRule ^hakkimizda$ hakkimizda.html [NC]
Bu kural büyük/küçük harf duyarsız çalışır.


5️⃣ Query String Sadeleştirme

1. Karmaşık URL:

sonuc.php?urun=gomlek&sezon=yaz
  • Okunabilir hali:

/gomlek/yaz

RewriteRule ^([A-Za-z0-9]+)/(yaz|kis|sonbahar|ilkbahar)$ sonuc.php?urun=$1&sezon=$2 [QSA]
  • Bu kural dinamik ürün ve sezonları destekler.

6️⃣ RewriteCond ile Koşullu Yönlendirme

1. Amaç:

  • Var olmayan URL’leri ana sayfaya yönlendirmek.

RewriteCond %&#123;REQUEST_FILENAME&#125; !-f
RewriteCond %&#123;REQUEST_FILENAME&#125; !-d
RewriteRule . / [R=301,L]
  • Bu yapı SEO için 404 yerine 301 yönlendirme sağlar.

❓ Sıkça Sorulan Sorular (SSS)

1. .htaccess performansı düşürür mü? Evet, ancak küçük ve orta ölçekli sitelerde fark edilmez.

2. RewriteRule ile Redirect farkı nedir? Redirect basittir, RewriteRule çok daha esnektir.

3. SEO için 301 neden kritiktir? Link değerini korur ve Google sıralamasını düşürmez.

4. Apache yerine Nginx kullanırsam? Nginx rewritelar config dosyasında yapılır.


✅ Sonuç

Apache mod_rewrite ile URL’leriniz hem kullanıcı dostu hem de arama motorları için optimize olur.

🚀 Rabisu Bulut altyapısında saniyeler içinde Apache sunucunuzu kurup hemen deneyebilirsiniz.