Merhaba bu yazımda PHP ile SEO Uyumlu Linkler Yapımı konusunda bilgi vermek istedim.
Tüm PHP Makalelerime Buradan Bakabilirsiniz
PHP’ye yeni başlayan ve PHP konusunda uzmanlaşmak isteyen kişilerin en çok merak ettikleri konulardan bir tanesi PHP ile SEO uyumlu linkler yapmaktır. PHP ile seo uyumlu linkler yapmak arama motorlarında sizi üst sıralara çıkarmasının yanında kullanıcıların gözüne de hoş görüneceğinden en faydalı konulardan bir tanesidir.
Bu konu aynı zamanda SEO’nun olmazsa olmazlarından bir tanesidir. Bir SEO uzmanına sitenizi gösterdiğinizde ilk olarak bakacağı yer SEO uyumlu link yapısı olmaktadır
PHP’de 3 türde veri alışverişi yapılabilmektedir. Bunlar;
- POST
- GET
- REQURST
türleridir. Bu yazımızda bizi ilgilendiren kısım ise GET metodudur. Normal bir PHP dosyasında detay sayfalarında genellikle parametreler GET olarak parametrelere yayılarak alınmaktadır. Örneğin bir id sistemini düşünürsek ve linkimizi index.php?id=1 olarak düşünürsek GET’ten gelen id değerini echo $_GET[“id”] olarak ekrana bastırabiliriz.
Fakat bu yapımızda verdiğimiz linkler seo uyumlu değildir. Bu nedenle bu yapıyı .htacsess dosyasını kullanarak seo uyumlu hale getirip index/1 şekline dönüştürmeliyiz.
Yapmamız Gerekenler
- Yazılarımızı özel bir fonksiyon kullanarak türkçe ve özel karakterlerden arındırmak
- .htacsess dosyasını kullanarak bu linklerin yönlendirmelerini doğru şekilde yapmak
İlk adımımız olarak türkçe karakterleri ve özel karakterleri arındıran fonksiyonumuzu yazalım
function urlYap($baslik){
$baslik = str_replace(array(""","'"), NULL, mb_strtolower($baslik,"UTF-8"));
$bul = array('Ç', 'Ş', 'Ğ', 'Ü', 'İ','I', 'Ö', 'ç', 'ş', 'ğ', 'ü', 'ö', 'ı', '-');
$yap = array('c', 's', 'g', 'u', 'i','i','o', 'c', 's', 'g', 'u', 'o', 'i', ' ');
$perma = strtolower(str_replace($bul, $yap, $baslik));
$perma = preg_replace("@[^A-Za-z0-9\-_]@i", ' ', $perma);
$perma = trim(preg_replace('/\s+/',' ', $perma));
$perma = str_replace(' ', '-', $perma);
return $perma;
}
Bu adımımızdan sonra artık linklerimize sadece id parametresini değil seo url olabilecek örnek olarak olarak başlık parametresini de dahil etmemiz gerekiyor yani yeni link yapımız index.php?baslik=php-konusunda-ornek&id=1
şeklinde olacak.
Htaccess Yönlendirmesi
.htacces dosyamızı açıyoruz ve içerisine aşağıda vereceğim kodları yapıştırıyoruz.
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^index/(.*)/(.*)$ index.php?baslik=$1&id=$2 [L,NC]
</IfModule>
Açıklamalar
index.php = içerikleri çekedeğimiz dosyamız
baslik = seo linkimiz için kullandığımız başlık parametresi
id = index.phpye gönderdiğimiz id parametremiz
(.*)= herhangi harf veya rakamdan oluşan karakterlerin buraya gelebileceğini belirtmektedir.
[L] = en son parametreyi belirttikten sonra parametrelerimizin o anda bittiği anlamına gelmektedir.
PHP SEO Uyumlu Link Fonksiyonu
Şimdi linklerimizi yeniden oluşturarak SEO Uyumlu Linker Veriyoruz. Yukarıda yazmış olduğumuz fonksiyonumuzu kullanarak çok kolay bir şekilde bunu yapabileceğiz.
Örnek link yapımız
<a href="index/<?=urlYap(PHP ile Seo Uyumu Linkler Yapmak).'/1'?>">
PHP ile Seo Uyumu Linkler Yapmak </a>
// Örnek Çıktısı index/php-ile-seo-uyumlu-linkler-yapmak/1
Son
Yazımızın sonuna gelirken .htacsess dosyası hakkında da bir kaç küçük bilgiyi sizlerle yaplaşmak istiyorum.
.Htacses ile WWW Yönlendirmesi Yapmak
RewriteEngine on
RewriteCond %{HTTP_HOST} ^sitemiz\.com [NC]
RewriteRule ^(.*)$ http://www.sitemiz.com/$1 [L,R=301,NC]
.Htacsess ile WWW Yönlendirmesini Kaldırmak
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.sitemiz\.com [NC]
RewriteRule ^(.*)$ http://sitemiz.com/$1 [L,R=301]
.Htacsess ile HTTPS Yönlendirmesi Yapmak
RewriteEngine on
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
.Htacsess URL’nin Sonuna / Koymak
RewriteCond %{REQUEST_URI} /+[^\.]+$
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
.Htacsess İle 301 Yönlendirmesi
Redirect 301 /oldpage.html http://www.sitemiz.com/yenisayfa.html
Redirect 301 /oldpage2.html http://www.sitemiz.com/klasor/
.Htacsess İle Deny All Access
Deny from All
.Htacsess ile Resim Görüntülemesini Kapatmak
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?sitemiz.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]
.Htacsess İle Kodları Sıkıştırmak
<IfModule mod_deflate.c>
# Force compression for mangled headers.
# http://developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping
<IfModule mod_setenvif.c>
<IfModule mod_headers.c>
SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
</IfModule>
</IfModule>
# Compress all output labeled with one of the following MIME-types
# (for Apache versions below 2.3.7, you don't need to enable `mod_filter`
# and can remove the `<IfModule mod_filter.c>` and `</IfModule>` lines
# as `AddOutputFilterByType` is still in the core directives).
<IfModule mod_filter.c>
AddOutputFilterByType DEFLATE application/atom+xml \
application/javascript \
application/json \
application/rss+xml \
application/vnd.ms-fontobject \
application/x-font-ttf \
application/x-web-app-manifest+json \
application/xhtml+xml \
application/xml \
font/opentype \
image/svg+xml \
image/x-icon \
text/css \
text/html \
text/plain \
text/x-component \
text/xml
</IfModule>
</IfModul
.Htacsess İle PHP Ayarları Yapmak
php_value <key> <val>
# For example:
php_value upload_max_filesize 50M
php_value max_execution_time 240
.Htacsess İle Hata Sayfalarını Ayarlamak
ErrorDocument 400 /hata/400.html
ErrorDocument 401 /hata/401.html
ErrorDocument 403 /hata/403.html
ErrorDocument 404 /hata/404.html
ErrorDocument 500 /hata/500.html
.Htacsess İle İndirmeye Zorlama (Force Download)
<Files *.md>
ForceType application/octet-stream
Header set Content-Disposition attachment
</Files>
.Htacsess ile UFT-8 Kodlama Ayarlamak
# Use UTF-8 encoding for anything served text/plain or text/html
AddDefaultCharset utf-8
# Force UTF-8 for a number of file formats
AddCharset utf-8 .atom .css .js .json .rss .vtt .xml