Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?
  • Genel
  • Dışarıdan siteye gelen linkler url'de 'public' eklemesi yapıyor

Paylaşımlı hostingde yayına aldığım bir laravel 10 proje var. Kendi içinde sorunsuz çalışıyor. Ancak google'dan tıklanan linkler siteye girildiğinde url'e 'public' eklemesi yapıyor. Örnek: site.com/hakkimizda -> site.com/public/hakkimizda
(Başlamadan: iki konunun da farkındayım: Laravel paylaşımlı hosting için değil ve public dosyalar harici diğerleri public_html dışında olmalı)

Google'daki linklerde sorun yok (site.com/hakkimizda). Sitenin kendi içinde de böyle bir sorun yok.
Benim tahminim .htaccess ile yaptığım public klasör yönlendirmesinden kaynaklanıyor.
Dosyaların tümünü hostingin public_html klasörüne atıp (public_html dışına erişimimiz yok) orada .htaccess ile public'e yönlendirdim. Muhtemelen sorun buradan kaynaklanıyor. Ama buradan sonrasını nasıl çözebileceğimi bilmiyorum. Akıl verebilecek varsa sevinirim. Şimdiden teşekkürler.

.htaccess dosyası (public_html altında)

DirectoryIndex index.php

RewriteEngine On 
RewriteRule ^$ public/index.php [L]
RewriteRule ^((?!public/).*)$ public/$1 [L,NC]

    megavolkan Merhaba,
    Bu tarz document_root sorunları yaşamamanız için, Laravel'e özel oluşturduğumuz Laravel Hosting hizmetimizi denemiş miydiniz?

    Aşağıdaki bağlantıdan inceleyebilir, dilerseniz 1 aylık ücretsiz paketimizi de alarak deneyimleyebilirsiniz;

    https://www.turkhosting.com.tr/laravel-hosting

    Ayrıca, Laravel Hosting paketlerimize foruma özel aşağıdaki kupon kodunu kullanarak ilk yıl %40 indirim ile sahip olabilirsiniz!

    Kupon Kodu: laravel.gen.tr

    megavolkan Laravel'in public klasörünün adını public_html yapacaksınız (yani diğer public_html klasörünün yerine geçmiş olacak), başka bir şey yapmayacaksınız.

      mgsmus Yanıtınız için teşekkür ederim. public_html altındaki klasörün adını public_html olarak değiştirdim. Çalışmadı, 404 hatası verdi. Sanırım sadece klasör adını değiştirmek yeterli olmadı. Başka nerelerde düzenleme yapmam gerekir? [Bu arada belirtmiştim ama public_html'in dışındaki bölüme dosya koyamıyoruz. Sadece public_html'in içine müdahale edebiliyoruz.)

        megavolkan Mevcut paylaşımlı hostingin verdiği public_html klasörünü sileceksiniz, Laravel'in public klasörünün adını public_html yapacaksınız, yani yer değiştirmiş olacaklar. Şöyle bir klasör yapısı olacak:

        app/
        bootstrap/
        config/
        database/
        public_html/
            .htaccess
            index.php
            ...
        resources/
        ...
        .htaccess dosyasını da orjinal haline getirmeyi unutmayın.

        ama siz şöyle yapmışsınız:

        app/
        bootstrap/
        config/
        database/
        public_html/
            public/
                .htaccess
                index.php
                ...
        resources/
        ...

        megavolkan Bu arada belirtmiştim ama public_html'in dışındaki bölüme dosya koyamıyoruz. Sadece public_html'in içine müdahale edebiliyoruz.

        demişsiniz. Bu durumda güvenlik açığı oluşturmadan nasıl Laravel kurabilirsiniz hiçbir fikrim yok.

          mgsmus Teşekkür ederim. Bunu yapma şansı yok ne yazıkki.