• 04-03-2024, 10:34:40
    #1
    Herkese kolay gelsin Framework kullanarak sistem geliştiriyorum ancak şöyle bir sorunum var

    xxxxx.com/home yazdığımda home controller tetikleniyor bunda sıkıntı yok

    Ancak;
    Googleda reklam çıktığımda google site bağlantısının sonuna ?gad_source=1 şeklinde bir tag ekliyor

    xxxxx.com/?gad_source=1 şeklinde site açıldığında da sistem controller tetiklemeye çalıştığı ve bulamadığı için 404 hatası veriyor bunu nasıl düzelteceğim

    kolay gelsin
  • 04-03-2024, 10:43:55
    #2
    Bu durumu düzeltmek için Laravel'in yönlendirme (routing) mekanizmasını kullanabilirsiniz. ?gad_source=1 gibi URL parametreleri, Laravel'in standart yönlendirme mantığına uymayabilir ve istenmeyen sonuçlara neden olabilir. Bu nedenle, bu tür URL parametrelerini kontrol etmek ve bunları işlemek için bir özel yönlendirme yapabilirsiniz.
    Öncelikle, bu URL parametresini kontrol eden ve uygun bir işlem gerçekleştiren bir yönlendirme tanımlayabilirsiniz. Örneğin, bu parametre varsa ana sayfaya yönlendirme yapabilirsiniz. Bunun için routes/web.php dosyasına aşağıdaki gibi bir yönlendirme ekleyebilirsiniz:
    use Illuminate\Support\Facades\Route;
    
    Route::get('/', function () {
        // ?gad_source=1 parametresi varsa ana sayfaya yönlendir
        if (request()->has('gad_source')) {
            return redirect('/home');
        }
    
        // Diğer durumlarda ana sayfayı görüntüle
        return view('welcome');
    });
    Bu kod, ana dizine yapılan istekleri kontrol eder. Eğer istek ?gad_source=1 parametresini içeriyorsa, /home yoluna yönlendirir. Aksi halde, normal şekilde ana sayfayı görüntüler.
    Bu şekilde, istenmeyen URL parametreleri nedeniyle oluşabilecek 404 hatalarını önleyebilirsiniz. Ancak, bu yaklaşımın SEO açısından etkilerini de göz önünde bulundurarak, yönlendirmeleri doğru şekilde yapmanız önemlidir.
  • 04-03-2024, 10:49:47
    #3
    Route::get('/{any}', function () {
        return redirect('/home');
    })->where('any', '.*');
  • 05-03-2024, 05:25:33
    #4
    request_uri yi ? parçladıktan sonra 0 cı arrayı request_uri olarak kullanman gerekir.
    $exp = explode('?', $_SERVER['REQUEST_URI']);
    $request_url = $exp[0];
    eğer ? sonradaki query string gerekiyorsa da
    if(isset($exp[1]) && !empty($exp[1])){
    $query_string = parse_str($exp[0]);
    }
    query_string çıktısı array olur, $query_string['gad_source'] gibi ulaşabilirsin.

    kendin yapında router kullanmak istersen de github da fastroute ve bramus router var ikiside iş görür
  • 05-03-2024, 11:10:03
    #5
    trgino adlı üyeden alıntı: mesajı görüntüle
    request_uri yi ? parçladıktan sonra 0 cı arrayı request_uri olarak kullanman gerekir.
    $exp = explode('?', $_SERVER['REQUEST_URI']);
    $request_url = $exp[0];
    eğer ? sonradaki query string gerekiyorsa da
    if(isset($exp[1]) && !empty($exp[1])){
    $query_string = parse_str($exp[0]);
    }
    query_string çıktısı array olur, $query_string['gad_source'] gibi ulaşabilirsin.

    kendin yapında router kullanmak istersen de github da fastroute ve bramus router var ikiside iş görür
    Kullandığım framework laravel değil,
    Bu yaklaşım aklıma geldi ama önce autoloader dosyaları yüklediği ve orada ilk önce controller tetikleneceğini düşünerek çalışacağını düşümemiştim çalıştı teşekkürler