Kategoriler
Kodlama

Bir URL’e 404 atamak (.htaccess)

Bir url’in 404 vermesini sağlamak hakkında. Bunu htaccess ile yapabiliyoruz.

Htaccess bilindiği gibi linux sistemli sunucularda web sitelerinde apache ayarlarının yapıldığı veya atandığı bir dosya. Çok severiz kendisini ve aslında bir web sitesinin tutarlı ve performanslı çalışması için kesinlikle uzman birinin elinden geçmesi şart.

Htaccess konusunda oldukça tecrübeliyim ve sanırım çok rahat ileri düzey uzman olduğumu söylesem yanlış olmaz, bu aralar SetEnvIfNoCase ve SetEnvIf konusunda yeni şeyler deniyorum ve özellikle belli durumlarda CDN kullanımları, önbelleğe alma süreleri, farklı başlık yanıtları gibi şeylerde çok işime yarıyor fakat tabii bu bana herhangi bir şey kazandırmıyor çünkü evet TR simülasyon.

Burada htaccess ile sitede belirlenen bazı url’lerin 404 vermesini sağlamak için örnek kod paylaşacağım, bu çok işime yaradı ve varsayılan olarak 404.php’nin başka bir yere yönlendirildiği bir web sitesinde yönlenmesini istemediğim url’leri bu şekilde ayrıştırmayı başardım.

<IfModule mod_rewrite.c>
RewriteEngine On
#kotu url ler
RewriteCond %{HTTP_HOST}@@%{HTTP_REFERER}!^([^@]*)@@https?://\1/.*
RewriteCond %{REQUEST_URI}^(.*)?(/xsayfam|kotuurl)(.*)$ [NC]
RewriteRule ^(.*)$ - [L,R=404]
</IfModule>

Bu sitenin kendi yaptığı sorguları ayrıştırır: RewriteCond %{HTTP_HOST}@@%{HTTP_REFERER}!^([^@])@@https?://\1/.

Burada kötü urller, [NC] kullanıldığında büyük küçük harf duyarsızlaşır: RewriteCond %{REQUEST_URI}^(.)?(kotusun-sen|/kotu/)(.)$ [NC] / Buraya ekleyeceğiniz adresleri dikkatli seçmelisiniz çünkü sadece bir sayfayı engellemek için o sayfanın adresinde geçen kelimelerin başka sayfalarda da geçebileceğini düşünerek tüm sayfaları engelleyebilirsiniz, bu yüzden xsayfam adresi için /xsayfam/ yaparsanız bu durumda /x-sayfam-ve-saz-arkadaslari/ adresini engellememiş olursunuz veya tersi .php eklerseniz tüm .php geçen sayfaları engellemiş olursunuz.

Bu ilgili urllerin geçtiği her şeyde 404 verdirir: RewriteRule ^(.*)$ - [L,R=404]

Eğer 404 yerine 403 versin diyorsanız [L,R=404] yerine [F] kullanabilirsiniz ancak 404 verdirme nedeniniz arama motorlarına sayfanın olmadığını bildirmek ise 403 verdirmek botun bu url’i sürekli olarak yeniden ziyaret edeceği anlamına gelir, 404 verirse bot bu url’i kendisine yeni bir ping/sinyal gelmedikçe yeniden taramak istemeyecektir.

Bu nasıl işinize yarar? Şöyle ki web sitenizde bir sayfa var ve adresi /xsayfam, bu sayfayı siteden silmek istemiyorsunuz ancak erişilmesini de istemiyorsunuz(belki de yalnızca belli kriterdekiler erişebilir), bu durumda /xsayfam adresinin sitede olmaya devam edip ulaşılmaya çalışıldığında 404 vermesini sağlayabilirsiniz sanki bu sayfa silinmiş gibi olur. Gibi.

Kolay gelsin.

Htaccess hakkında daha fazla bilgi ve ayarlamalar için askapache’i mutlaka takibe alın.

Aşağıdaki linkler de htaccess içeren diğer yazılarım:

.htaccess ile WordPress girişini korumak: WordPress admin panelini ve login sayfasını korumak için .htaccess çözümü. Net ve en etkili yöntem.
Sosuz döngüyü engellemek [.htaccess]: Sitenizin sonsuz yönlendirme döngüsünden kurtarmak için bir çözüm.
.htaccess ipucu: çift slash kaldırma, düzeltme
.htaccess ipucu: bulunamayan bozuk resim linkleri yerine resim göstermek
Paylaşımlı hostinglerde time zone değiştirmek: PHP timezone/Saat dilimi ayarlarını kolayca değiştirmek.
WordPress wp-content hack: wp-content klasöründe var olmayan görseller için 404 sayfası yerine varsayılan bir resim göstermek.
WordPress login güvenliği: WordPress login sayfanızı hackerlardan korumak için yapılabilecek bazı işlemler.
WordPress Security – Güvenlik