• 21-01-2023, 23:38:25
    #1
    Merhabalar. PHP de çok iyi değilim ve öğrenme aşamasındayım. Belki istediğim saçma bir şeydir lakin bazı sitelerde bunu görüyorum.

    Denk geldiğim sitelerde siteadi.com/ilan/2023-model-bmw yazdığımda adres doğru ve siteadi.com/ilan/2023 yazdığımda adres yanlış. Ama benim sitede bu ikinci adres yanlış olduğu halde 404 hata sayfasına yönlendiremedim.

    Bu benim .htaccess deki url yapısından bir örnek:
    RewriteRule ^haberler/([0-9a-zA-Z-]+)$      index.php?do=haberler&haberkategoriseo=$1     [L,QSA]
    Şimdi ben siteme:
    benimsitem.com/haberler/spor-haberleri diye yazdığımda sayfayı sorunsuz açıyor.
    benimsitem.com/haberler/adfasdfas diye yazdığımda adres yanlış olduğu halde 404 sayfasına yönlendirmiyor. Sanki sayfa varmış da veri boşmuş gibi gözüküyor.

    Buna .htaccess deki ([0-9a-zA-Z-]+) kodunun neden olduğunun farkındayım. Doğal olarak, buraya ne yazarsam yazayım hata sayfasına yönlendirmeyeceğini biliyorum. Çünkü koddan bunu yapmasını ben istiyorum. Lakin bazı sitelerde bunu gördüm, yani ilk başta verdiğim siteadi.com üzerindeki örnekteki gibi bir harf bile yanlış olsa hata sayfasına yönlendiriliyor. Ben bunu yapamadım. ([0-9a-zA-Z-]+) kodunun yerine adresdeki $1 değerinde eşleşme olmadığı zaman hata sayfasına gitmesini istiyorum. Sanırım bu .htaccess de olacak bir şey değil, eğer .htaccess de bu yapılamazsa php de bunu nasıl yapabilirim ?
  • 21-01-2023, 23:43:20
    #2
    BalabanTURK adlı üyeden alıntı: mesajı görüntüle
    Merhabalar. PHP de çok iyi değilim ve öğrenme aşamasındayım. Belki istediğim saçma bir şeydir lakin bazı sitelerde bunu görüyorum.

    Denk geldiğim sitelerde siteadi.com/ilan/2023-model-bmw yazdığımda adres doğru ve siteadi.com/ilan/2023 yazdığımda adres yanlış. Ama benim sitede bu ikinci adres yanlış olduğu halde 404 hata sayfasına yönlendiremedim.

    Bu benim .htaccess deki url yapısından bir örnek:
    RewriteRule ^haberler/([0-9a-zA-Z-]+)$      index.php?do=haberler&haberkategoriseo=$1     [L,QSA]
    Şimdi ben siteme:
    benimsitem.com/haberler/spor-haberleri diye yazdığımda sayfayı sorunsuz açıyor.
    benimsitem.com/haberler/adfasdfas diye yazdığımda adres yanlış olduğu halde 404 sayfasına yönlendirmiyor. Sanki sayfa varmış da veri boşmuş gibi gözüküyor.

    Buna .htaccess deki ([0-9a-zA-Z-]+) kodunun neden olduğunun farkındayım. Doğal olarak, buraya ne yazarsam yazayım hata sayfasına yönlendirmeyeceğini biliyorum. Çünkü koddan bunu yapmasını ben istiyorum. Lakin bazı sitelerde bunu gördüm, yani ilk başta verdiğim siteadi.com üzerindeki örnekteki gibi bir harf bile yanlış olsa hata sayfasına yönlendiriliyor. Ben bunu yapamadım. ([0-9a-zA-Z-]+) kodunun yerine adresdeki $1 değerinde eşleşme olmadığı zaman hata sayfasına gitmesini istiyorum. Sanırım bu .htaccess de olacak bir şey değil, eğer .htaccess de bu yapılamazsa php de bunu nasıl yapabilirim ?

    Merhaba,
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^haberler/([^/]+)$ /404.php [L,R=404]
    Bu kuralı ekleyebilir misiniz.
  • 21-01-2023, 23:46:27
    #3
    frcwings adlı üyeden alıntı: mesajı görüntüle
    Merhaba,
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^haberler/([^/]+)$ /404.php [L,R=404]
    Bu kuralı ekleyebilir misiniz.
    Php ile yapabileceğin örnek kodu da sunuyorum. Umarım işinize yarar.

    $url = $_SERVER['REQUEST_URI'];
    if(preg_match('/^\/haberler\/([^\/]+)/', $url)) {
        // do something
    } else {
        header("HTTP/1.0 404 Not Found");
        include '404.php
  • 21-01-2023, 23:49:19
    #4
    frcwings adlı üyeden alıntı: mesajı görüntüle
    Merhaba,
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^haberler/([^/]+)$ /404.php [L,R=404]
    Bu kuralı ekleyebilir misiniz.
    Merhabalar hocam. Kodu kullandım ama işe yaramadı.

    frcwings adlı üyeden alıntı: mesajı görüntüle
    Php ile yapabileceğin örnek kodu da sunuyorum. Umarım işinize yarar.

    $url = $_SERVER['REQUEST_URI'];
    if(preg_match('/^\/haberler\/([^\/]+)/', $url)) {
        // do something
    } else {
        header("HTTP/1.0 404 Not Found");
        include '404.php
    Tamam, bir de bunu deneyeyim hocam. Teşekkür ederim yardımlarınız için.
  • 21-01-2023, 23:52:10
    #5
    BalabanTURK adlı üyeden alıntı: mesajı görüntüle
    Merhabalar hocam. Kodu kullandım ama işe yaramadı.



    Tamam, bir de bunu deneyeyim hocam. Teşekkür ederim yardımlarınız için.
    Dilersen .ht içerisinde bulunan tüm kodları paylaşırsan inceleyebilirim.
  • 22-01-2023, 00:06:51
    #6
    frcwings adlı üyeden alıntı: mesajı görüntüle
    Dilersen .ht içerisinde bulunan tüm kodları paylaşırsan inceleyebilirim.
    Şimdi sizin ilk verdiğiniz kodu yanlış eklemişim. Onu eklediğimde işe yaradı. Yani haberler/ kısmından sonra yazılanlar hata sayfasına yönlendiriliyor. Bunun için çok teşekkür ederim .
    Peki bu koddaki sorunu nasıl çözebilirim
    RewriteRule ^([0-9a-zA-Z-]+)/([0-9a-zA-Z-]+)$         index.php?do=haberler&haberkategoriseo=$1&haberseo=$2      [L,QSA]
    Bunda da benimsitem.com/spor-haberleri/dostluk-kazandi gibi bir url girdiğimde veritabanından url kısmı eşleştiği için sayfaya yönleniyor. Ama benimsitem.com/spor-haberleri/adfasdf gibi bir url girdiğimde beni hata sayfasına atmasını istiyorum ama bunda atmıyor.

    Htacces içindeki kodlar bunlar :
    RewriteBase /
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    Options +FollowSymLinks
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    DirectoryIndex ilk.html index.htm index.html index.php
    
    RewriteRule ^sitemap.xml$ sitemap.php [L,NC]
    RewriteRule ^kategori/(.*?)$                             emlak.php?do=emlak_kategori&kat_seo=$1
    RewriteRule ^harita/(.*?)$                                 emlak.php?do=emlak_harita&kat_seo=$1
    RewriteRule ^haberler/([^/]+)$                         index.php?do=404        [L,R=404]
    RewriteRule ^haberler/([0-9a-zA-Z-]+)$           index.php?do=haberler&haberkategoriseo=$1                              [L,QSA]
    RewriteRule ^haberler$                                     index.php?do=haberler                                                                      [L,QSA]
    RewriteRule ^([0-9a-zA-Z-]+)/([0-9a-zA-Z-]+)$            index.php?do=haberler&haberkategoriseo=$1&haberseo=$2                   [L,QSA]
    RewriteRule ^blog(.*?)$                                      index.php?do=blog                                                                            [L,QSA]
    RewriteRule ^(.*?)-blog-(.*?)$                            index.php?do=blog&seo=$1&detay=$2                                          [L,QSA]
    RewriteRule ^(.*?)-blogkategori-(.*?)$              index.php?do=blog&seo=$1&kategori=$2                                     [L,QSA]
    RewriteRule ^iletisim$                                        index.php?do=sayfa&seo=iletisim                                                    [L,QSA]
    
    ErrorDocument 401 /index.php?do=hata
    ErrorDocument 403 /index.php?do=hata
    ErrorDocument 404 /index.php?do=404
    ErrorDocument 500 /index.php?do=hata
    
    
    Options -Indexes
    
    AddHandler application/x-httpd-php56 .php
  • 22-01-2023, 00:12:38
    #7
    BalabanTURK adlı üyeden alıntı: mesajı görüntüle
    Şimdi sizin ilk verdiğiniz kodu yanlış eklemişim. Onu eklediğimde işe yaradı. Yani haberler/ kısmından sonra yazılanlar hata sayfasına yönlendiriliyor. Bunun için çok teşekkür ederim .
    Peki bu koddaki sorunu nasıl çözebilirim
    RewriteRule ^([0-9a-zA-Z-]+)/([0-9a-zA-Z-]+)$         index.php?do=haberler&haberkategoriseo=$1&haberseo=$2      [L,QSA]
    Bunda da benimsitem.com/spor-haberleri/dostluk-kazandi gibi bir url girdiğimde veritabanından url kısmı eşleştiği için sayfaya yönleniyor. Ama benimsitem.com/spor-haberleri/adfasdf gibi bir url girdiğimde beni hata sayfasına atmasını istiyorum ama bunda atmıyor.

    Htacces içindeki kodlar bunlar :
    RewriteBase /
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    Options +FollowSymLinks
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    DirectoryIndex ilk.html index.htm index.html index.php
    
    RewriteRule ^sitemap.xml$ sitemap.php [L,NC]
    RewriteRule ^kategori/(.*?)$                             emlak.php?do=emlak_kategori&kat_seo=$1
    RewriteRule ^harita/(.*?)$                                 emlak.php?do=emlak_harita&kat_seo=$1
    RewriteRule ^haberler/([^/]+)$                         index.php?do=404        [L,R=404]
    RewriteRule ^haberler/([0-9a-zA-Z-]+)$           index.php?do=haberler&haberkategoriseo=$1                              [L,QSA]
    RewriteRule ^haberler$                                     index.php?do=haberler                                                                      [L,QSA]
    RewriteRule ^([0-9a-zA-Z-]+)/([0-9a-zA-Z-]+)$            index.php?do=haberler&haberkategoriseo=$1&haberseo=$2                   [L,QSA]
    RewriteRule ^blog(.*?)$                                      index.php?do=blog                                                                            [L,QSA]
    RewriteRule ^(.*?)-blog-(.*?)$                            index.php?do=blog&seo=$1&detay=$2                                          [L,QSA]
    RewriteRule ^(.*?)-blogkategori-(.*?)$              index.php?do=blog&seo=$1&kategori=$2                                     [L,QSA]
    RewriteRule ^iletisim$                                        index.php?do=sayfa&seo=iletisim                                                    [L,QSA]
    
    ErrorDocument 401 /index.php?do=hata
    ErrorDocument 403 /index.php?do=hata
    ErrorDocument 404 /index.php?do=404
    ErrorDocument 500 /index.php?do=hata
    
    
    Options -Indexes
    
    AddHandler application/x-httpd-php56 .php
    Bu kuralı tüm kuralların önüne ekleyebilir misin.
    RewriteRule ^haberler/([^/]+)$ index.php?do=404 [L,R=404]
  • 22-01-2023, 00:25:34
    #8
    frcwings adlı üyeden alıntı: mesajı görüntüle
    Bu kuralı tüm kuralların önüne ekleyebilir misin.
    RewriteRule ^haberler/([^/]+)$ index.php?do=404 [L,R=404]
    Olmadı hocam Yani yine deminki gibi, sizin verdiğiniz bu kod çalışıyor ama benimsitem.com/spor-haberleri/adsfa gibi bir url beni hata sayfasına atmıyor. Sanırım benim kod yapısında bir sorun var. 3 gündür bununla uğraşıyorum, kafayı sıyırma derecesindeyim
  • 22-01-2023, 00:35:17
    #9
    BalabanTURK adlı üyeden alıntı: mesajı görüntüle
    Olmadı hocam Yani yine deminki gibi, sizin verdiğiniz bu kod çalışıyor ama benimsitem.com/spor-haberleri/adsfa gibi bir url beni hata sayfasına atmıyor. Sanırım benim kod yapısında bir sorun var. 3 gündür bununla uğraşıyorum, kafayı sıyırma derecesindeyim
    son kere inceleyip ht dosyasını düzenleyeyim belki işe yarar. yaramalıydı ama anlam veremedim site yapılandırması ile alakalı olabilir.