lostyazilim
tr.link

PHP - .htaccess SELF link

11 Mesajlar 3.890 Okunma
acebozum
tr.link

ahmetonurslmz ahmetonurslmz Software Developer Kullanıcı
  • Üyelik 12.05.2015
  • Yaş/Cinsiyet 33 / E
  • Meslek Software Developer, SEO
  • Konum İstanbul Avrupa
  • Ad Soyad A** S**
  • Mesajlar 197
  • Beğeniler 81 / 28
  • Ticaret 5, (%100)
PHP'de self link olayında wordpress'deki gibi sadece yazı url gözükmesi için .htaccess'de ayarladığımızda çakışma oluyor ve bazı sayfalarda yazı template'na sahip olabiliyorlar. Bunun çözümü var mı? Gerekirse kategori içinde /kategori/ kullanmadan yazdırmak istiyorum fakat .htaccess çok kısıtlı imkan veriyor? Koskoca PHp'de başka çıkış yolu yok mu? En zorlandığım konulardan bir tanesi.
 

 

https://ahmetonursolmaz.com.tr
Founder of Leadfure
wmaraci
reklam

mxaksoy mxaksoy Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 23.03.2018
  • Yaş/Cinsiyet 29 / E
  • Meslek Webmaster
  • Konum İstanbul Avrupa
  • Ad Soyad M** A**
  • Mesajlar 1358
  • Beğeniler 482 / 344
  • Ticaret 3, (%100)
query string denedin mi?
 

 

SENibrahim SENibrahim ibocum Kullanıcı
  • Üyelik 22.12.2017
  • Yaş/Cinsiyet 24 / E
  • Meslek Öğrenci
  • Konum Aydın
  • Ad Soyad İ** Ş**
  • Mesajlar 4598
  • Beğeniler 1727 / 1541
  • Ticaret 15, (%100)
Merhabalar ahmetonurslmz ;


$id = $_GET["id"];
$sorgu = mysql_query("SELECT * FROM veriler Where id='$id'");


Bu yapımızda verdiğimiz linklerde eğer bir seo calısması yapılmamışsa icerik.php?id=20 gibi bir url ile çalışacaktır.Fakat biz verilerimizi daha anlasılır bir url ile çekmek istiyoruz.

Örnek vermek gerekirse siteurl.com/yeni-web-sayfamiz-yayinda

Yapmamız Gerekenler
Yazılarımızın başlıklarını özel karakterlerden arındırarak url formatına uygun bir hale getirmek
.htaccess dosyamızda gerekli yönlendirmeleri yapmak
Yeni linklerimizi yeni seo yapımıza göre vermek
Öncelikle ilk adımımızı yani seo url ye dönüştürülecek fonksiyonumuzu yazıyoruz.Bunu sayfamızda çoğu yerde kullanacağımız için sitenizin heryerine çağrılan bir php dosyasına yazarsanız istediğiniz zaman kullanabilirsiniz. Örn (config.php veya header.php)

Gerekli Seo Fonksiyonumuz

function seo($s) {
$tr = array('ş','Ş','ı','I','İ','ğ','Ğ','ü','Ü','ö','Ö','Ç','ç','(',')','/',':',',');
$eng = array('s','s','i','i','i','g','g','u','u','o','o','c','c','','','-','-','');
$s = str_replace($tr,$eng,$s);
$s = strtolower($s);
$s = preg_replace('/&.+?;/', '', $s);
$s = preg_replace('/\s+/', '-', $s);
$s = preg_replace('|-+|', '-', $s);
$s = preg_replace('/#/', '', $s);
$s = str_replace('.', '', $s);
$s = trim($s, '-');
return $s;
}


Bu fonksiyon türkçe karakterleri normal karakterlere , özel karakterleride url formatında çevirmektedir örnek vermek gerekirse


$baslik = "İsteğe Bağlı Asil Listede Yer Alan Öğrencilerimiz için Dilekçe Duyurusu";
echo seo($baslik);

// Çıktı : istege-bagli-asil-listede-yer-alan-ogrencilerimiz-icin-dilekce-duyurusu


İstediğimiz url yapısını olusturmayı başardık , şimdi sıra geldi yönlendirmeleri yapmaya
Php dosyamızda içeriği yine id ile çağıracağız tek yapmamız gereken htaccesde doğru yönlendirme yapmak

Htaccess Yönlendirmesi
.htacces dosyamızı açıyoruz yok ise yeni bir .htacces olusturuyoruz php dosyalarımızın olduğu dizine
Dosyamızın içine girdikten sonra


# Yönlendirmeleri aktif eder
RewriteEngine on

# Yeni bir yönlendirme kuralı ekliyoruz
RewriteRule ^([0-9a-zA-Z-_]+)/([0-9]+)$ posts.php?sef=$1&id=$2 [L,QSA]


Açıklamalar
posts.php = içerikleri id ye göre aldığımız php dosyamız
sef = seo link yapımızın geldiği ara değişken
id = posts.php de veri çektiğimiz id parametresi

([0-9a-zA-Z-_]+) = seo linkimiz bu kısma yerleşecek a-z arası 0-9 arası ve – karakterleri (sef)
([0-9]+) = post.php de kullandığımız id değeri buraya gelicek

[L] = url uyuştuğu an keser bunun anlamı şu örneğin siteurl.com/merhaba burada merhaba bizim url miz fakat [L] koymaz isek merhabaads gibi bir url yide aynı sayfaya yönlendirecek bazen hatalar olabilir o yüzden [L ] koyuoruz uyuştuğu an kesiyor devam ettirmiyor

[QSA] = Bu GET ile gösterilen verilerin aktif olmasını sağlar yani örnekte sef=$1&id=$2
Bazı configlerde koymaya gerek yokken bazı web server configlerinde koymayı gerektir biz öncelik olarak ekleyelim

Linklerimizi Yeniden Oluşturalım
Örnek olarak anasayfaya bir duyuru listesi çekeceksiniz mysql_query ve fetch kullanarak bir diziye aktardınız
Dizi adımız $veri olsun

Örnek link yapımız

">

// Örnek Çıktısı yazi-basligi/1
// Örnek Çıktısı yazi-basligi/1


Diğer Htaccess Ayarları
.html ile biten url ler: rewriterule mizde sol kısımdaki $ dan önce .html koymamız yeterli

Kategoriye göre getirmek : rewriteruleye bir parametre daha vermelisiniz ,

RewriteRule ^([0-9a-zA-Z-_]+)/([0-9a-zA-Z-_]+)/([0-9]+)$ posts.php?kat=$1&sef=$2&id=$3 [L,QSA]


Farklı tablolardan farklı veriler için, Örneğin
haberler tablosundan , haberler/haber1/1
fotogaleri tablosundan , fotogaleri/fotohaber1/1

RewriteRule ^haberler/([0-9a-zA-Z-_]+)/([0-9]+)$ haber.php?sef=$1&id=$2 [L,QSA]
RewriteRule ^galeriler/([0-9a-zA-Z-_]+)/([0-9]+)$ galeri.php?sef=$1&id=$2 [L,QSA]


Olası Bozukluk ve Hatalar
En önemli sorunlardan biri sitenizin statik dosyalarının yönlendirmeden etkilenmesi (css,js,img gibi dosyalar)

1.Çözüm : Sitenizin head tagları arasına base href ekleyin



2.Çözüm : Htaccess yapılandırması Rewrite kuralızdan hemen önce bu kodu ekleyin

RewriteCond %{REQUEST_FILENAME} !-f

3.Çözüm : Htaccess şartlandırması belirli klasörlere dokunulmasın

RewriteCond $1 !^(css|js|images|inc|lang)

Birden fazla rewriteruleniz varsa bazen çakışma yaşanabilir bunun için katmanlı bir yapı kullanabilirsiniz

Örneğin :
sayfalar/iletisim-sayfasi/2
yazilar/gunun-yazisi/2

Kaynak: www[.]mustafaercel[.]com/2013/09/web-sayfalarimizi-seo-linklerle-yapilandiralim/
Zindemarket BEYAZMASTER

kişi bu mesajı beğendi.

Herkez hata yapabilir, pardon herkes. | ibocum.com

Decimas Decimas WM Aracı Kullanıcı
  • Üyelik 19.04.2015
  • Yaş/Cinsiyet 26 / E
  • Meslek Developer
  • Konum İstanbul Avrupa
  • Ad Soyad E** E**
  • Mesajlar 820
  • Beğeniler 1 / 302
  • Ticaret 1, (%100)
Parametrelerini sıklaştırıp daha benzersiz bir url elde etmeye bak, örneğin sadece konu başlığına dayalı değilde, tarıh parametresini de ele al. Bu sayede çakışmalardan bir nebze olsun kaçınabilirsin.
ahmetonurslmz

kişi bu mesajı beğendi.

no time for caution
wmaraci
wmaraci

ahmetonurslmz ahmetonurslmz Software Developer Kullanıcı
  • Üyelik 12.05.2015
  • Yaş/Cinsiyet 33 / E
  • Meslek Software Developer, SEO
  • Konum İstanbul Avrupa
  • Ad Soyad A** S**
  • Mesajlar 197
  • Beğeniler 81 / 28
  • Ticaret 5, (%100)
KomanBeğrek Merhaba sizede, bunlar zaten yaptığım, işlediğim kısımlar. Bunu çevirmede herhangi bir problem zaten yaşamıyorum fakat şöyle bir durum var. Gerekli seo fonksiyonunu kullanmadan panelden yazi_url atadım. Bu yazı_url ile çalıştırıyorum. Bunu .htaccess ile ayarladıktan sonra yazı olmayan sayfalarda da yazı templatesi açılıyor örneğin; yazımın yazı url'si şu şekilde: self-url-nedir

alanadim.com/self-url-nedir/ açılıyor. İçeriğinde içerikle birlikte fakat alanadim.com/selfs-url-nedir/ tarzında yazı_url'si bu değerde olmayan bir sayfada açılıyor 404'e yönlendirmeden. Sayfa açılıyor ve gerekli bağlantıyı sağlayamadığı için sadece html plan gözüküyor normal veritabanından çektiğim veriler hariç
 

 

https://ahmetonursolmaz.com.tr
Founder of Leadfure

ahmetonurslmz ahmetonurslmz Software Developer Kullanıcı
  • Üyelik 12.05.2015
  • Yaş/Cinsiyet 33 / E
  • Meslek Software Developer, SEO
  • Konum İstanbul Avrupa
  • Ad Soyad A** S**
  • Mesajlar 197
  • Beğeniler 81 / 28
  • Ticaret 5, (%100)
Decimas O kadar benzerleştirmek istemiyorum. Koskoca PHP'de bu tarz bir şeyi sağlanabilecek yöntem elbette vardır fakat kaç gündür aralıkla bakmama rağmen bir sonuç elde edemedim.
 

 

https://ahmetonursolmaz.com.tr
Founder of Leadfure

ahmetonurslmz ahmetonurslmz Software Developer Kullanıcı
  • Üyelik 12.05.2015
  • Yaş/Cinsiyet 33 / E
  • Meslek Software Developer, SEO
  • Konum İstanbul Avrupa
  • Ad Soyad A** S**
  • Mesajlar 197
  • Beğeniler 81 / 28
  • Ticaret 5, (%100)
mxaksoy derken hocam?
 

 

https://ahmetonursolmaz.com.tr
Founder of Leadfure

Decimas Decimas WM Aracı Kullanıcı
  • Üyelik 19.04.2015
  • Yaş/Cinsiyet 26 / E
  • Meslek Developer
  • Konum İstanbul Avrupa
  • Ad Soyad E** E**
  • Mesajlar 820
  • Beğeniler 1 / 302
  • Ticaret 1, (%100)

ahmetonurslmz adlı üyeden alıntı

Decimas O kadar benzerleştirmek istemiyorum. Koskoca PHP'de bu tarz bir şeyi sağlanabilecek yöntem elbette vardır fakat kaç gündür aralıkla bakmama rağmen bir sonuç elde edemedim.


Geriye tek mantık kalıyor o da url adresinin bir dosya veya klasör olup olmadığına bakmak ama hem seo url hemde eşleşen bir durum olduğunda ne yaparsan yap pek sağlıklı olmaz. Sonuçta gelen kişi konuyu okumaya gelirken başka bir şey görmek istemez. file_get_contents veya url parse edip file, folder exists diye bakabilirsin.
ahmetonurslmz

kişi bu mesajı beğendi.

no time for caution

Zindemarket Zindemarket WM Aracı Kullanıcı
  • Üyelik 17.03.2015
  • Yaş/Cinsiyet 38 / E
  • Meslek E-ticaret
  • Konum Konya
  • Ad Soyad I** A**
  • Mesajlar 126
  • Beğeniler 27 / 17
  • Ticaret 2, (%100)
Merhaba, KomanBeğrekin değerli yazısına ek olarak tabloya seo adında bir sütun açıp sef linkleri bu sütuna kaydettirin, kaydetme işlemi yaparken aynı isimden bir link var ise linke ek yapmasını veya değiştirilmesini sağlayın linkleri id değerine göre değilde seo ya göre çağrılmasını sağlarsanız ful sefli linkler elde edebilirsiniz
SENibrahim

kişi bu mesajı beğendi.

ahmetonurslmz ahmetonurslmz Software Developer Kullanıcı
  • Üyelik 12.05.2015
  • Yaş/Cinsiyet 33 / E
  • Meslek Software Developer, SEO
  • Konum İstanbul Avrupa
  • Ad Soyad A** S**
  • Mesajlar 197
  • Beğeniler 81 / 28
  • Ticaret 5, (%100)
Zindemarket Merhaba hocam, bu aşama zaten yapıldı. Benim sorum daha farklı. Lütfen göz atıp da cevap verin. Yine de teşekkürler ama.
 

 

https://ahmetonursolmaz.com.tr
Founder of Leadfure
wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al