disket.net Beta
Konu Listesine Dön

Apache sunucuda .htaccess ile SEO dostu URL yönlendirmesi yapamıyorum, yardım!

Web Geliştirme Açılış: 28.07.2026 13:00 4 Görüntülenme
Selam yoldaşlar, uzun zamandır PHP ile uğraşıyorum ama Apache'nin mod_rewrite modülüyle başım dertte. Localhost'ta XAMPP üzerinde çalışan bir projem var, URL'leri /kategori/urun-adi seklinde göstermek istiyorum. .htaccess dosyasına RewriteRule ekledim ama bir türlü çalışmıyor. Apache'nin mod_rewrite modülünü kontrol ettim, httpd.conf'ta LoadModule rewrite_module modules/mod_rewrite.so satırı aktif. Dosya izinlerini de kontrol ettim, .htaccess dosyası proje kök dizininde duruyor. Ama yine de 404 hatası alıyorum. RewriteEngine On satırını ekledim, RewriteRule ^kategori/([a-zA-Z0-9_-]+)$ urun.php?slug=$1 [L,QSA] kuralını yazdım. Ne eksik acaba? Bir de AllowOverride All ayarını yapmam gerektiğini duydum, onu da kontrol ettim ama hata devam ediyor. Dostlar yardımcı olursanız sevinirim.

Cevaplar (3)

Kanka, bence sorun AllowOverride ayarında. XAMPP'te varsayılan olarak httpd.conf içinde <Directory /> ve <Directory "C:/xampp/htdocs"> blokları var. O bloklarda AllowOverride None yazıyordur. Onu AllowOverride All yapman lazım. Ayrıca .htaccess dosyasının başında Options +FollowSymLinks satırını da ekle. Bir de RewriteBase / yazmayı dene. Eğer hala olmazsa, Apache error log'u kontrol et, genelde C:/xampp/apache/logs/error.log yolunda. Orada net bir hata mesajı olur. Bir de RewriteRule'daki regex'i test etmek için online araçlar var, mesela regex101.com. Ama bence büyük ihtimal AllowOverride ayarı.


crthero13 yazdı:

Selam yoldaşlar, uzun zamandır PHP ile uğraşıyorum ama Apache'nin mod_rewrite modülüyle başım dertte. Localhost'ta XAMPP üzerinde çalışan bir projem var, URL'leri /kategori/urun-adi seklinde göstermek istiyorum. .htaccess dosyasına RewriteRule ekledim ama bir türlü çalışmıyor. Apache'nin mod_rewrite modülünü kontrol ettim, httpd.conf'ta LoadModule rewrite_module modules/mod_rewrite.so satırı aktif. Dosya izinlerini de kontrol ettim, .htaccess dosyası proje kök dizininde duruyor. Ama yine de 404 hatası alıyorum. RewriteEngine On satırını ekledim, RewriteRule ^kategori/([a-zA-Z0-9_-]+)$ urun.php?slug=$1 [L,QSA] kuralını yazdım. Ne eksik acaba? Bir de AllowOverride All ayarını yapmam gerektiğini duydum, onu da kontrol ettim ama hata devam ediyor. Dostlar yardımcı olursanız sevinirim.


Hobidaş, joydrifter54'ün dediklerine ek olarak, bir de .htaccess dosyasının UTF-8 BOM'suz kaydedildiğinden emin ol. Bazen Windows'taki Notepad ile kaydedince BOM ekleniyor ve Apache onu okuyamıyor. Notepad++ kullanıyorsan Encoding > Encode in UTF-8 without BOM seçeneğini seç. Ayrıca RewriteRule'daki hedef dosyanın (urun.php) gerçekten var olduğunu kontrol et. Bir de [L] flag'i ile sonlandırma yapmışsın ama bazen [L] yeterli olmayabiliyor, [END] flag'ini dene (Apache 2.4+). Eğer Apache sürümün 2.2 ise [L] yeterli. Sürümü kontrol etmek için bir PHP dosyasına phpinfo(); yazıp Apache sürümüne bakabilirsin.
Sorun çözüldü! Çok teşekkür ederim yoldaşlar. Sorun gerçekten AllowOverride ayarıymış. httpd.conf'taki <Directory "C:/xampp/htdocs"> bloğunda AllowOverride None yazıyormuş, onu All yapınca düzeldi. Ayrıca segabreaker88'in dediği gibi .htaccess dosyasını UTF-8 BOM'suz kaydettim, belki de o da etkili olmuştur. Şimdi her şey çalışıyor. Sağ olun, iyi forumlar!

Bu konuya cevap yazabilmek için retro topluluğumuza üye olmalı veya giriş yapmalısınız.

İlgili Konular & Benzer Paylaşımlar

PHP 5.3'te mcrypt ile AES-256-CBC şifreleme: OpenSSL'e geçişte veri uyumluluğu sorunu Kategori: Web Geliştirme
PHP 5.6 ile eski bir projeyi PHP 8.2'ye taşırken mcrypt ve mysql_* hataları Kategori: Web Geliştirme
PHP 5.2'de legacy projede MySQLi bağlantı hatası: mysqlnd mi, yoksa başka bir şey mi? Kategori: Web Geliştirme