Not Found Hatası
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
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';?>
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (2)
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.