v2.5.2
Giriş yap

Not Found Hatası

coder
159 defa görüntülendi

Merhaba arkadaşlar.

Aşağıdaki videoyu takip ediyorum.
Eğitmenin yaptığı şeylerin aynısını yaptığım halde Not Found 404 hatası alıyorum.
Sadece index url'sinde hata almıyorum.

Sorun nedir anlamadım.

Alt klasörde çalışmıyorum. Sanal sunucu oluşturdum
http://php-for-beginners

Bahsettiğim Video

Linkler

<a class="nav-link <?php echo urlIs("/") ? 'active': ""; ?>" href="/">Home</a>
<a class="nav-link <?php echo urlIs("/about") ? 'active': ""; ?>" href="/about">About</a>
<a class="nav-link <?php echo urlIs("/contact") ? 'active': ""; ?>" href="/contact">Contact</a>

functions.php

<?php
function dd($value){
    echo "<pre>"; print_r($value); echo "</pre>";
    die();
}

function urlIs($value){
    return $_SERVER['REQUEST_URI'] ===  $value;
}

index.php

<?php
require_once 'functions.php';

$uri = $_SERVER['REQUEST_URI'];

if($uri === '/'){
    require_once 'controllers/index.php';
}elseif($uri === '/about'){
    require_once 'controllers/about.php';
}elseif($uri === '/contact'){
    require_once 'controllers/contact.php';
}

controllers/about.php

<?php
$heading = "About Us";
require_once 'views/about.view.php';

views/about.view.php

<?php require_once 'partials/header.php';?>
<?php require_once 'partials/nav.php';?>
<?php require_once 'partials/banner.php';?>

<main class="bg-light">
    <div class="container py-5">
    About İçerik
    </div>
</main>
   
<?php require_once 'partials/footer.php';?>
ebykdrms
273 gün önce

Sanırım bu eğitimde kullanılan sunucu ayarlarıyla ilgili bir durum.
Tüm isteklerin (eğer bir karşılığı yoksa) kök klasördeki index.php dosyasını çalıştırması sağlanmış.
Bunun için sunucu üzerinde düzenleme yaptığı bir yer göremedim. Bir .htaccess dosyası da kullanmıyor.
Muhtemelen kullandığı sunucunun varsayılan ayarı bu şekilde.

Bu sorunu aşmak için projenizin kök klasörüne .htaccess adlı bir dosya oluşturun ve içine şunları yazın:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L]

Bu sayede sunucu, dosya karşılığını bulamadığı istekleri index.php dosyasına yönlendirecektir.
index.php dosyası da url'ye bakıp hangi dosyayı çağırması gerektiğini bulacaktır.