Jadual Kandungan
1. Pasang pakej sitemap (disyorkan)
2. Menjana sitemap secara dinamik
3. Sesuaikan kandungan sitemap
4. Mengoptimumkan dengan caching atau generasi yang dijadualkan
5. Hidangkan fail sitemap statik
Nota akhir
Rumah rangka kerja php Laravel Cara membuat sitemap untuk aplikasi Laravel

Cara membuat sitemap untuk aplikasi Laravel

Aug 20, 2025 am 09:16 AM

Pasang pakej Spatie/Laravel-Sitemap menggunakan komposer dan menerbitkan fail konfigurasi jika diperlukan. 2. Buat laluan untuk menjana dan melayani sitemap secara dinamik, sama ada dengan menulisnya ke fail atau mengeluarkan XML secara langsung. 3. Sesuaikan sitemap dengan menambahkan URL statik dan dinamik, seperti catatan blog dari pangkalan data, dengan keutamaan, kekerapan perubahan, dan tarikh pengubahsuaian terakhir. 4. Mengoptimumkan prestasi dengan mencipta perintah artisan untuk menjana sitemap dan menjadualkannya setiap hari melalui penjadual tugas Laravel. 5. Hidangkan sitemap.xml yang dihasilkan dari direktori awam dan merujuknya dalam robots.txt dengan sitemap: https://yoursite.com/sitemap.xml, memastikan ia disahkan dan bebas daripada URL duplikat atau pembangunan.

Cara membuat sitemap untuk aplikasi Laravel

Mewujudkan sitemap untuk aplikasi Laravel adalah proses mudah yang membantu enjin carian mengindeks laman web anda dengan lebih berkesan. Sitemap menyenaraikan semua halaman penting laman web anda, menjadikannya lebih mudah bagi crawler seperti Googlebot untuk menemui dan menilai kandungan anda. Berikut adalah cara anda boleh menjana dan melayani sitemap dinamik di Laravel.


1. Pasang pakej sitemap (disyorkan)

Cara yang paling mudah dan paling mudah dipelihara ialah menggunakan pakej khusus seperti spatie/laravel-sitemap . Ia didokumentasikan dengan baik dan diselenggarakan secara aktif.

Jalankan arahan berikut untuk memasangnya melalui komposer:

 Komposer memerlukan spatie/laravel-sitemap

Terbitkan fail konfigurasi (pilihan):

 PHP Artisan Vendor: Publish --Provider = "Spatie \ SiteMap \ SiteMapServiceProvider"

Ini mewujudkan fail konfigurasi di config/sitemap.php di mana anda boleh menyesuaikan tetapan jika diperlukan.


2. Menjana sitemap secara dinamik

Buat laluan di routes/web.php untuk melayani sitemap:

 Gunakan Illuminate \ http \ request;
Gunakan spatie \ sitemap \ siteMapgenerator;

Route :: Get ('/siteMap.xml', fungsi () {
    // menghasilkan sitemap secara dinamik
    SiteMapGenerator :: create (config ('app.url'))-> writeToFile (public_path ('sitemap.xml'));

    respons pulangan ()-> fail (public_path ('siteMap.xml'));
});

Sebagai alternatif, untuk prestasi yang lebih baik, menghasilkan sitemap melalui perintah artisan dan menyampaikan fail statik.


3. Sesuaikan kandungan sitemap

Anda mungkin mahu memasukkan URL tertentu, terutama yang ditarik dari pangkalan data (seperti jawatan blog, produk, dll.).

Berikut adalah contoh membina sitemap secara manual:

 Gunakan spatie \ sitemap \ sitemap;
Gunakan spatie \ sitemap \ tags \ url;

Route :: Get ('/siteMap.xml', fungsi () {
    $ siteMap = siteMap :: create ();

    // tambah laluan statik
    $ siteMap-> tambah (url :: create ('/')-> setPriority (1.0)-> setChangeFrequency ('daily'));
    $ siteMap-> tambah (url :: create ('/about')-> setPriority (0.8)-> setChangeFrequency ('monthly'));
    $ siteMap-> tambah (url :: create ('/contact')-> setPriority (0.7)-> setChangeFrequency ('tahun'));

    // Tambah Kandungan Dinamik (misalnya, catatan blog)
    \ App \ Models \ Post :: Where ('Diterbitkan', Benar)-> Setiap (Fungsi ($ pos) Penggunaan ($ siteMap) {
        $ sitemap-> tambah (
            Url :: create ("/blog/{$ post-> slug}")
                -> setLastModificationDate ($ post-> dikemas kini_at)
                -> SetChangeFrequency ('mingguan')
                -> setPriority (0.9)
        );
    });

    // output secara langsung sebagai XML
    Tindak Balas Pulangan ($ siteMap-> Render (), 200, [[
        'Kandungan-jenis' => 'Aplikasi/xml'
    ]);
});

Pendekatan ini mengelakkan menulis ke fail dan menghasilkan sitemap dengan cepat. Walau bagaimanapun, untuk laman web besar, ini boleh menjadi perlahan.


4. Mengoptimumkan dengan caching atau generasi yang dijadualkan

Untuk prestasi yang lebih baik, menjana sitemap secara berkala menggunakan penjadual tugas Laravel.

Buat perintah tukang:

 PHP Artisan Make: Command GenerateSitemap

Dalam arahan yang dihasilkan ( app/Console/Commands/GenerateSitemap.php ), melaksanakan logik:

 Gunakan Illuminate \ Console \ Command;
Gunakan spatie \ sitemap \ sitemap;
Gunakan spatie \ sitemap \ tags \ url;

GenerateSiteMap kelas memanjangkan arahan
{
    dilindungi $ tandatangan = 'SiteMap: Generate';
    dilindungi $ description = 'menghasilkan sitemap';

    mengendalikan fungsi awam ()
    {
        $ siteMap = siteMap :: create ();

        $ siteMap-> tambah (url :: create ('/')-> setPriority (1.0)-> setChangeFrequency ('daily'));

        \ App \ Models \ Post :: Where ('Diterbitkan', Benar)-> Setiap (Fungsi ($ pos) Penggunaan ($ siteMap) {
            $ sitemap-> tambah (
                Url :: create ("/blog/{$ post-> slug}")
                    -> setLastModificationDate ($ post-> dikemas kini_at)
                    -> SetChangeFrequency ('mingguan')
                    -> setPriority (0.9)
            );
        });

        $ sitemap-> writeToFile (public_path ('siteMap.xml'));

        $ this-> info ('sitemap dijana.');
    }
}

Kemudian jadilahnya dalam app/Console/Kernel.php :

 Jadual Fungsi yang Dilindungi (Jadual $ Jadual)
{
    $ jadual-> perintah ('sitemap: menghasilkan')-> setiap hari ();
}

Sekarang, jalankan php artisan schedule:run melalui Cron (biasanya ditubuhkan pada pelayan) untuk melaksanakannya setiap hari.


5. Hidangkan fail sitemap statik

Sebaik sahaja dihasilkan, serahkan sitemap.xml dari direktori public . Tiada laluan khas diperlukan jika anda meletakkannya secara langsung di /public/sitemap.xml .

Atau, jika anda ingin mengawal akses, simpan laluan tetapi sajikan fail:

 Route :: Get ('/siteMap.xml', fungsi () {
    respons pulangan ()-> fail (public_path ('siteMap.xml'));
});

Jangan lupa untuk menambah sitemap ke robots.txt anda:

 SiteMap: https://yoursite.com/sitemap.xml

Nota akhir

  • Untuk laman web yang sangat besar, pertimbangkan untuk memisahkan sitemap ke dalam ketulan atau menggunakan indeks sitemap.
  • Sentiasa sahkan sitemap anda menggunakan alat seperti Google Search Console atau Perkhidmatan Pengesahan XML .
  • Elakkan termasuk pembangunan atau URL pendua.

Pada asasnya, gunakan spatie/laravel-sitemap , menyesuaikannya dengan laluan dan model anda, dan menghasilkannya sama ada atas permintaan atau melalui arahan yang dijadualkan. Itulah cara paling bersih untuk mengendalikan sitemaps di Laravel.

Atas ialah kandungan terperinci Cara membuat sitemap untuk aplikasi Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Stock Market GPT

Stock Market GPT

Penyelidikan pelaburan dikuasakan AI untuk keputusan yang lebih bijak

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Bagaimana cara log mesej ke fail di Laravel? Bagaimana cara log mesej ke fail di Laravel? Sep 21, 2025 am 06:04 AM

Laravelusmonologtologmessagesviathelogfacade, withdefaultlogsstoredinstorage/logs/laravel.log.configurechannelsinconfig/logging.phptocontroloutput;

Cara Mengesahkan API di Laravel Cara Mengesahkan API di Laravel Sep 18, 2025 am 12:26 AM

InstallLaravelsanctumviacomposerandPublishitsFiles, thenrunmigrations.2.addthasapitokenstraittotheusermodel.3.definelogin, lo gout, anduserroutesinapi.php, usingsanctum'sauth: sanctummiddleware.4.protectapiroutesbyapplytheauth: sanctummiddleware.5.incl

Bagaimana cara menulis ujian ciri di Laravel dengan perosak? Bagaimana cara menulis ujian ciri di Laravel dengan perosak? Sep 16, 2025 am 06:12 AM

InstallPestviaComposerandinitializeitinlaraveltosetuptesting.2.CreateAfeatureTestSts/featuretovalidateuser-facingIntionsLikeHttprequestsanddatabaseChangesusingPest's Syntax.

Bagaimana menggunakan hubungan Hasonythrough di Laravel? Bagaimana menggunakan hubungan Hasonythrough di Laravel? Sep 17, 2025 am 06:38 AM

Acountrycanaccessallpoststhroughusersusinghasmanythrough.forexample, withcountries, user, andpoststableLesLinkedbyforeignkeys, thecountrymodeldefinesahaSmanythroughrelationshiptopostviauser,

Bagaimana untuk membuat carian teks penuh di Laravel? Bagaimana untuk membuat carian teks penuh di Laravel? Sep 16, 2025 am 03:42 AM

Toimplementfull-textSearchInlaravel, firstaddfull-textIndexIntHemigrationUsing $ Table-> fullText (['tajuk', 'content']); thenusewherefulltext (['tajuk', 'content'], $ quere)

Bagaimana untuk melaksanakan pengesahan API dengan Sanctum Laravel? Bagaimana untuk melaksanakan pengesahan API dengan Sanctum Laravel? Sep 19, 2025 am 04:08 AM

Toimplementapiauthenticationwithlaravelsanctum, youneedtosetuptoken-berasaskan authenticationThatallowsspas, MobileApps, andthird-partyservicestosecurelyaccessyourapi.sanCTumpumpumphrovidesalightweightapproachbyssuingapitokenshatcan

Bagaimana menggunakan pengawal sumber laluan di Laravel? Bagaimana menggunakan pengawal sumber laluan di Laravel? Sep 24, 2025 am 05:05 AM

Pengawal Sumber Laravel dengan cepat memproses operasi CRUD melalui penghalaan yang tenang, menggunakan perintah artisan untuk menjana pengawal dan mendaftar laluan sumber, dan boleh membuat semua laluan standard dalam satu baris kod, yang menyokong sekatan tindakan, menambah middleware dan penamaan, dan menggabungkan model penghalaan yang mengikat ke parameter secara automatik.

Bagaimana cara menulis pertanyaan SQL mentah di Laravel? Bagaimana cara menulis pertanyaan SQL mentah di Laravel? Sep 24, 2025 am 02:55 AM

Gunakan fasad DB untuk melaksanakan SQL asli, pilih db :: pilih, db :: masukkan, db :: kemas kini atau db :: padam mengikut jenis pertanyaan, dan gunakan parameter mengikat untuk mencegah suntikan SQL; DB :: Tidak bersedia boleh digunakan untuk perubahan struktur; Digabungkan dengan DB :: RAW, ungkapan asli boleh tertanam dalam pembina pertanyaan.

See all articles