Neler Yeni

.htaccess ile URL Uzantılarını Değiştirme Sorunu

Katılım
22 Nisan 2020
Mesajlar
15
Dahası  
Reaksiyon skoru
2
İsim
Orkun
.htaccess ile bütün sayfalarımda .html yapısını değiştirmeye çalışıyorum ama olmuyor yardım eder misiniz?
 

Ekler

  • Ekran görüntüsü 2025-01-09 103732.png
    Ekran görüntüsü 2025-01-09 103732.png
    10.2 KB · Hit: 19
  • Ekran görüntüsü 2025-01-09 103745.png
    Ekran görüntüsü 2025-01-09 103745.png
    18.7 KB · Hit: 16
Katılım
31 Mayıs 2021
Mesajlar
303
Dahası  
Reaksiyon skoru
87
İsim
Andaç
Hocam yaptığınız işlem doğru, fakat kullandığınız htaccess dosyasını sunucunun gördüğünden emin misiniz?
 

MuratGH

80+
Katılım
29 Ağustos 2022
Mesajlar
388
Dahası  
Reaksiyon skoru
86
İsim
Murat GH
RewriteEngine On
# Eğer dosya ya da dizin mevcutsa hiçbir şey yapma
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# .html uzantısını kaldır
RewriteRule ^(.*)\.html$ /$1 [L,R=301]
# .html uzantısı olmadan istek yapıldığında
.html dosyasına yönlendir
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /$1.html [L]

mod_rewrite aktif mi kontrol et, eğer aktifse sunucu loglarını kontrol et.
 
Katılım
22 Nisan 2020
Mesajlar
15
Dahası  
Reaksiyon skoru
2
İsim
Orkun
  • Konu Sahibi Konu Sahibi
  • #4

Ekler

  • Ekran görüntüsü 2025-01-09 120020.png
    Ekran görüntüsü 2025-01-09 120020.png
    84.1 KB · Hit: 7
Katılım
31 Mayıs 2021
Mesajlar
303
Dahası  
Reaksiyon skoru
87
İsim
Andaç
Sanırım görmüyor görmesini nasıl sağlarım
Hocam öncelikli olarak makine_parkı.html gibi türkçe karakter içeren dosya adları kullanmanızı önermiyorum.

Bunun dışında projenizde sanırım php yok. Htaccess kullanımı için php gerekiyor. Projenizi php taşıyabilir misiniz?
 
Katılım
22 Nisan 2020
Mesajlar
15
Dahası  
Reaksiyon skoru
2
İsim
Orkun
  • Konu Sahibi Konu Sahibi
  • #6
Hocam öncelikli olarak makine_parkı.html gibi türkçe karakter içeren dosya adları kullanmanızı önermiyorum.

Bunun dışında projenizde sanırım php yok. Htaccess kullanımı için php gerekiyor. Projenizi php taşıyabilir misiniz?
php olması gerektiğini bilmiyordum taşımaya çalışayım çok teşekkürler hocam
 

f4hredd1n

80+
Katılım
4 Ocak 2025
Mesajlar
14
Bence bir index.php dosyası oluştur, tüm istekleri oraya yönlendir. Bu sayede hem sorunu çözersin hem de 404 page oluşturabilirsin.

Ruby:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]

index.php için:

PHP:
<?php

$routes = [
    "/" => "index", // "/" url'i match edildiğinde index.html dosyası çalışacak.
    "/index.html" => "index",
    "/hakkinda.html" => "hakkinda",
    "/urunler.html" => "urunler",
    "/iletisim.html" => "iletisim",
    "/referanslar.html" => "referanslar",
    "/makine-parki.html" => "makine_parkı",
    "/kalite-belgeleri.html" => "kalite_belgeleri",
    "*" => "404.html" // bu ise url yukarıdakilerden biriyle eşleşmediğinde açılacak sayfadır.
    // tüm url'leri istediğiniz gibi değiştirebilirsiniz.
    // Array'ın key'i match olacak url, value ise bu url'de çağıracağı sayfadır.
    // örnek: "/deneme" => "deneme",
    // isterseniz ingilizce route da tanımlayabilirsiniz.
    // örnek - "/products" => "urunler"
    // fakat html-based bir sayfa yönetimi yaptığımız için ayrı bir dosya oluşturmak gerekebilir.
    // çünkü header gibi bir componente tek sayfada "/contact" türkçesi için de "/iletisim" aynı anda olmaz.
    // en azından .html'i php'ye çevirmediğiniz sürece.
];

function requestURI(){
    $dirname = dirname($_SERVER['SCRIPT_NAME']);
    $basename = basename($_SERVER['SCRIPT_NAME']);
    $dirname = $dirname !== '/' ? $dirname : '';
    $uri = str_replace([$dirname, $basename], '', $_SERVER['REQUEST_URI']);
    return $uri;
}

function callFileByURI($routes) {
    $uri = requestURI();
    if (array_key_exists($uri, $routes)) {
        $file = $routes[$uri] . '.html';
        if (file_exists($file)) {
            require __DIR__ . "/$file";
            return;
        }
    }
    // Eğer eşleşme yoksa veya dosya bulunamazsa 404'ü yükle
    $errorPage = __DIR__ . "/" . $routes["*"];
    if(file_exists($errorPage)){
        require $errorPage;
        return;
    }
    die("404 Not Found");
}

// Çalıştır
callFileByURI($routes);

Bu şekilde bir yapı olabilir, kullanmak sana kalmış. Güvenlik açısından url'den özel karakter girip file_exists fonksiyonunu bypass edebilirler, onun için requestURI fonksiyonunda birden fazla kontrol yapabilirsin, vaktim kısıtlı o yüzden yazamadım. Çok kapsamlı bir proje değilse zarar gelmez diye düşünüyorum.. Ama projen büyük veya dinamik olacaksa kesinlikle bir framework üzerinden gitmeni öneririm, Laravel ve türevleri gibi. Kolay gelsin.
 
Top Bottom