Herkese merhabalar ve iyi forumlar. Üzerinde çalıştığım bir proje var ve başım header() yönlendirmeleriyle belada size kısa dosya yapımdan daha sonra koddan bahsedeceğim daha sonra oluşan yazacağım.
--include
-----include/functions.php
--views
-----views/dosya_kontrol.php
upload-work.php
index.php
Dosya yapım örnek vermem gerekiyorsa yukarıdaki gibidir. Şimdi gelelim yapmak istediğim şeye, upload-work.php de bir form dosyam var ve içerisine dosya yükleniyor, form submit edildiğinde ise views/dosya_kontrol.php ye gönderiyor. Dosya yüklemede sorun olabilir diyebilirsiniz, belki ama onda sorun yok çalışıyor. Şimdi buranın kodunu ise aşağıda veriyorum ve bunun üzerinden bir anlatım yapacağım.
require_once '../include/functions.php';
session_start();
$userID = $_SESSION['userid'];
//1 - HEADER YÖNLENDİRMESİNİ BURADA YAPARSAM SIKINTISIZ ÇALIŞIYOR.
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $imageResult = uploadFile($_FILES['image-file'], '../assets/uploads/images/', $productSlug);
    if (!$imageResult['status']) {
         //2 - HEADER YÖNLENDİRMESİNİ BURADA siteadi.com/upload-work.php ye yönlendirmesi gerekirken siteadi.com/views/upload-work.php'ye yönlendiriyor.
        header('Location: ../upload-work.php?status=error&message=' . urlencode($imageResult['message']));
        exit;
        
    }
    // Dosya yükleme
    $fileResult = uploadFile($_FILES['file-upload'], '../assets/uploads/files/', $productSlug);
    if (!$fileResult['status']) {
                  //2 - HEADER YÖNLENDİRMESİNİ BURADA siteadi.com/upload-work.php ye yönlendirmesi gerekirken siteadi.com/views/upload-work.php'ye yönlendiriyor
        header('Location: ../upload-work.php?status=error&message=' . urlencode($fileResult['message']));
        exit;
    }
Yukarıdaki kodda da açıklama satırı ile //1 ve 2 - HEADER YÖNLENDİRMESİNİ BURADA ile başlayan kısımlarda kullandığımda;
  1. Kısımda kullandığımda kusursuz şekilde yönlendirmeyi yapıyor. (siteadi.com/upload-work.php)(istediğim bu)
  2. Kısımda yani Dosya durumlarını kontrol eden if sorguları içerisinde kullandığımda ise istediğim şekilde bir yönlendirme yapmıyor.(siteadi.com/views/uplod-work.php)(hatalı olan)
Denemediğim şey kalmadı direkt statik bir şekilde url ile yönlendirmek istedim, ___DIR___, chdir, dirname, chdir('/path/to/project/root') denedim ama asla olmuyor.

.Htaccess dosyam ise aşağıdaki gibidir.
#Rewrite moturunu aç
RewriteEngine On
#Siteniz bir alt dizinde çalışıyorsa doğru ayarı yapın, bir klasör içerisinde ise /klasöradı/ eğer kök dizinde ise / şeklinde bırakın.
RewriteBase /

#profile/username yapısına yönlendirme
RewriteRule ^profile/([a-zA-Z0-9_-]+)$ profile.php?username=$1 [L,QSA]

#Statik dosyaları, CSS JS, RESİM FONT yeniden yazma kurallarına muaf tut
RewriteCond %{REQUEST_URI} !\.(min.js|min.css|css|js|jpg|png|gif|jpeg|svg|woff|woff2|ttf)$ [NC]
#Eğer mevcut dosya yada dizin yoksa isteği index.php ye yönlendir.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L]
Dosya yükleme fonksiyonunun içinde hata olabilir diyenler için onu da bırakıyorum;
function uploadFile($file, $targetDir, $prefix) {
    if (!isset($file['tmp_name']) || empty($file['tmp_name'])) {
        return ['status' => false, 'message' => 'Dosya yüklenmedi veya geçici dosya eksik.'];
    }
    $fileName = sanitizeFileName($prefix . '-' . rand(100000, 999999) . '.' . pathinfo($file['name'], PATHINFO_EXTENSION));
    $targetPath = $targetDir . $fileName;
    if (!is_dir($targetDir)) {
        return ['status' => false, 'message' => 'Hedef klasör mevcut değil: ' . $targetDir];
    }
    if (!is_writable($targetDir)) {
        return ['status' => false, 'message' => 'Hedef klasör yazılabilir değil: ' . $targetDir];
    }
    if (move_uploaded_file($file['tmp_name'], $targetPath)) {
        return ['status' => true, 'fileName' => $fileName];
    } else {
        return ['status' => false, 'message' => 'Dosya yüklenirken bir hata oluştu.'];
    }
}
Yardımcı olursanız çok sevinirim, kafayı sıyırmak üzereyim