.htaccess İle Karakter Boyutuna Göre Yönlendirme

PHP kullanıyorsanız ve freamework yapılarına aşına iseniz URL gizleme, SEO URL vb. yapılarda .htaccess can kurtarıcıdır. Aynı zamanda .htaccess ile üst düzey olmasa da güvenlik işlemlerinizi sağlayabilirsiniz.
Bu yazıda .htaccess ile URL / karakter uzunluğuna göre yönlendirme nasıl yapılır örnekleyeceğim.

Projemizde kullanmış olduğumuz yapıda native PHP ile yazdığımız tarafın artık yetersiz olduğu kanaatine vardık ve dedik ki Codeigniter freamework kullanarak daha düzgün bir yapı sağlayalım. Fakat birçok noktadan gelen URL isteklerini değiştiremeyeceğimiz için projedeki 40 karakter ile şifrelenmiş ( SHA1 ) URL için farklı bir yönlendirme yapmamız gerekiyordu.
URL örneği : https://websitedomain.com/40karakteruzunluktakiurlbilgisi

Codeigniter yapısına geçtiğimiz URL : https://websitedomain.com/index.php/welcome/index/40karakteruzunluktakiurlbilgisi gibi olacaktı. Biz bunu yine ilk örnekteki gibi kullanmak istedik. Burada .htaccess ile ufak bir yönlendirme sağladık.



Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([a-zA-Z0-9]{40})(/?)$ /index.php/welcome/index/$1 [QSA,L]
RewriteRule ^(.{40})(/?)$ /index.php/welcome/index/$1 [QSA,L]

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php/$1 [QSA,L]

 

.htaccess ile önce 40 karakter uzunluğundaki URL isteklerini index.php/welcome/index e yönlendirdik. 40 karakterden farklı ise index.php üzerinden standart Codeigniter CONTROLLER/FUNCTION yapısına yönlendirmeye devam ettik. Böylece eskiden kullanmış olduğumuz URL yapısını bozmadan yenilerini de kullanabiliyoruz. Sizinde alt yapıda değişiklik yapmanız gerekip fakat URL tarafında değişiklik yapmamanız gerekiyor ise bu yöntemi kullanabilirsiniz.

Şunu da unutmamak lazım PHP için arka planda Apache çalışıyor. Nginx vb. yapılır çalışıyor ise PHP Engine e göre .htaccess yazmanız gerekebilir.

Not : Codeigniter için URL yapısında /index.php kaldırılmıştır. 
İşinize yaraması dileğiyle. 🙂

Bir Cevap Yazın