Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

.htaccess yardımm

merhaba arkadaşlar bir haber sitesi yapıyorum linklerde malum seo uyumlu permalink falan olacak ama mantığını bir türlü oturtturamadım

şimdi 5 tane sayfam var
1-)index.php
2-)haber_icerik.php
3-)kategoriler.php
4-)fotogaleri.php
5-)fotolar.php

index'te haberler var haberlere tıklayınca link olarak
www.sitadi.com/haber_icerik.php?id=1
bu şekilde bunu
www.siteadi.com/haberin_basligi.html
yada
www.siteadi.com/haberin_basligi-id.html (id = gelen id)
şeklinde yapmak
kategoriler'ide
kategoriye tıklayınca
www.siteadi.com/kategori.php?id=3
bunu =>
www.siteadi.com/spor.html
bu şekilde ypmak istiyorum
bunları htaccess te nasıl ayıracağımı nasıl yapacağımı bir türlü bulamadım yardımcı olrmusunuz ????
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Doğru Cevap

  • reelmg adlı üyenin fotoğrafı
    9 yıl önce yazılmış
    35 cevap - 14 soru
    Selam arkadaşım
    konuyu biraz uzun alıcam eğer ilk defa bu konu ile ilgilenen arkadaşlar olursa onlarada bir faydası olsun.

    benim kullandığım .htacces dosyasının bir örneğini veriyorum sana
    ama öncelikle belirtmek isterimki linklerin ww........com/.........html şeklinde olsını .htacces sağlamıyor ht dosyası senin bu şekilde gönderdiğin linklerin php sayfanda nasıl değişkenlere gitmesi gerektiği ve hangi sayfaya gitmesi gerektiği gibi konuları organize ediyor.

    bir haberi görüntülemek istediğinde görüntülemeyi yapacak sayfaya mutlaka ayırt edici bir değişken göndermelisin buda genel de id alanı olur normalde linki olşuturuken habergoster.php?id=$id gibi bir kod yazarız bunun yerine htaccess kullanacaksan soyle olmanı haber-$id/$haberadi
    burada dikkat etmen gereken konu her linkin tam olması yani "http://www......com/haber-$id/$haberadi" şeklinde olmalı aksi takdirde açılan sayfada tıkladığın link haber-$id/ ın altında arar gideceği yeri; bunun içinde $domain="www........com"; diye bir değişken tanımlayıp linkleri kullanırken "$domain/haber-$id/$haberadi" şeklinde basitçe yapabilirsin.
    şimdi gelelim .htaccess doyasına


    RewriteEngine On ####### BURASI SATIR SABİT #########
    RewriteBase / ####### BURASI SATIR SABİT #########

    RewriteCond %{HTTP_HOST} !^www\.DOMAIN\.com$ ####### KENDİ ALAN ADIN #########

    RewriteRule ^haber-([0-9-]+)/([A-Za-z0-9-]+)/?$ habergoster.php?islem=hg&haberid=$1 [L]

    ## yukarıdaki bu satırda ^ işareti bizim alan admızı temsil burada ht diyoruzki bizim alan adımızdan sonra haber- string ifadesinden sonra gelen rakamı al sonra / ifadesinden sonra string veya numeric ne gelirse al sonra bunları habergoster.php dosyasına yönledir ama yönlendirirken benim sabitim olan islem değişkenine hg degerini ata ve haberid değişkenini ilk parantez bloğunun içi olarak yap burada satır sonunda ki $1 ifadesi bu işe yarıyor sırası ile kullandığın her parantez bloğu link yönlendirilirken $1 $2 $3 .... $10 gibi depolanıyor sende bunları kendi değişkenlerine atıyorsun buradak mantık string ifadeleri elle yazmanda ister en başına ister en sonuna elle .html ekle farketmez örnekteki "haber-([0-9-]+)/([A-Za-z0-9-]+)/" parantezler dışında kalan herşey elle eklenmiş string ifadeler yani bir nevi benim linkleme kurallarımı oluşturuyor sen bunu kendine göre düzenleyebilirsin

    son olarak senin kategori yapını örneklemek gerekirse
    RewriteRule ^([A-Za-z0-9-]+).html?$ kategorigoster.php?kategoriad=$1 [L]
    şeklinde ki satır sayfana kategori adını gönderir ama aynı isimli kategorilerin olma ihtimali varsa bir yanında id eklemelisin

    bu arada gönderdiğin bütün linkler http protokolune uygun olmalı yani istemeyen karakter denilen karakterler kullanmalısın bunun için aşağıda ki kod işine yarayabilir. Link kategori adını yazdırmadan önce bu işlemlerden geçir



    $istenmeyen_karakterler=array('Ç', 'ç', 'Ğ', 'ğ', 'ı', 'İ', 'Ö', 'ö', 'Ş', 'ş', 'Ü', 'ü', ' ', '$', '@', '/', '"', ':', ';', '€', '*', '?', '<', '>', '|', '&');
    
    $yeni_karakterler=array('C', 'c', 'G', 'g', 'i', 'I', 'O', 'o', 'S', 's', 'U', 'u', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-');
    
    $yeni_kategori_ad=strtolower(str_replace($istenmeyen_karakterler, $yeni_karakterler, $SENIN_KATEGORI_ADIN));
    



    şu an için aklıma gelenler bunlar umarım faydası olur.

    Kolay Gelsin
    • sharq adlı üyenin fotoğrafı sharq
      Options +FollowSymLinks
      RewriteEngine On
      RewriteRule ^(.*)-(.*).html index.php&link=$1 [L,NC]

      böle yapnca htaccess dosyasını
      diye hata alıyorum:
      Internal Server Error

      The server encountered an internal error or misconfiguration and was unable to complete your request.

      Please contact the server administrator, root@root.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.

      More information about this error may be available in the server error log.
      Apache/2.2.8 (Win32) PHP/5.2.6 Server at localhost Port 90

      böle ypnca almıyorum

      <IfModule mod_rewrite.c>
      Options +FollowSymLinks
      RewriteEngine On
      RewriteRule ^(.*)-(.*).html index.php&link=$1 [L,NC]
      </IfModule>



      <IfModule mod_rewrite.c>

      bunu kullanayımmı kullanmayayımmı?
      9 yıl önce yazılmış
    • sharq adlı üyenin fotoğrafı sharq
      RewriteCond %{HTTP_HOST} !^www\.DOMAIN\.com$ ####### KENDİ ALAN ADIN #########
      bide burda DOMAIN yazan yere kendi alan adımımı yazacağım mesela sitem

      www.sitem.com olsun orayı
      RewriteCond %{HTTP_HOST} !^www\.sitem\.com$ ####### KENDİ ALAN ADIN #########
      olarakmı düzenlicem yoksa orası sabitmi ve localde çalışıyosam ne yapacağım yani .com yok localde??
      9 yıl önce yazılmış
    • sharq adlı üyenin fotoğrafı sharq
      :S

      bide burda
      RewriteRule ^haber-([0-9-]+)/([A-Za-z0-9-]+)/?$.html habergoster.php?id=$1 [L]

      bunu yazdım linkolarakda

      www.sitem.com/haber-1/haber-basligi.html yaptım ama 404 aldım yani bunun link'i ne olacak
      9 yıl önce yazılmış
    • sharq adlı üyenin fotoğrafı sharq
      bu hatayı halletim ama <IfModule mod_rewrite.c> bunu anlamını da açklarsan ii olr :D
      9 yıl önce yazılmış
    • sharq adlı üyenin fotoğrafı sharq
      RewriteBase / bunu kldırınca çlştı fakat bu seferde css dosyası gitti yani link'i görmüyor
      RewriteBase / koyuncada 404hatası veriyor base href="siteadım.com" yazdım bu sefer sadece resimler gldi ama css gine yok :S
      9 yıl önce yazılmış
    • reelmg adlı üyenin fotoğrafı reelmg
      apache de bu modul yuklumu diye kontrol eden komut
      eğer yükle değilse not (!) operatoru ile kullanılıp farklı bir yonlendirme yapılabiliyor hatasayfam.php gibi bir sayfaya dönebiliyorsun
      9 yıl önce yazılmış
    • reelmg adlı üyenin fotoğrafı reelmg
      css i çağırdığın kod tam link olmalı ilk cevapta bahsetmiştim http: diye başlamalı yoksa kendi / ile biten sanal url nin altında arar
      9 yıl önce yazılmış
    • sharq adlı üyenin fotoğrafı sharq
      teşekkür ederim yukardaki cevabın tab bi htaccess makalesi olmuş olası hataları ben tekrar yazarım şuan hata gözükmüyor base href'i css'in atına yazmışım o yüzden okuyamamış css'i
      9 yıl önce yazılmış

Cevaplar

Hiç cevap bulunamadı.