How to Create sitemap.xml in Laravel|Laravel Sitemap

Laravel Sitemap.xml

Laravel sitemap.xml, In this tutorial we will learn how to create search engine friendly sitemap.xml in laravel. Here we will illustrate each thing step by step for creating a sitemap in laravel.

Since everyone is developing websites either for their businesses or organization. Search engines have been providing support with marketing. and One of the recommendations they give is creating a sitemap to aid with indexing the business or personal website.

Today, the importance of sitemaps for website owners is controversial. you’re not going to lose anything by sparing a little time to create one. and this is made easy by existing tools such as putting together a sitemap in Laravel. 

Sitemap

Sitemap concept is defined as a file developed with the primary purpose of listing the website pages, which will enable search engines such as Google, Mozilla, Internet Explorer, and Opera Mini to learn about the organizations of the content you have in your site.

Search engines have web crawlers that interpret these files helping the search engine crawl your site more intelligently, for example, the Googlebot. 

Sitemaps provide the valued metadata that is linked to your pages, as listed in the sitemap created. Metadata is said to be the information regarding the webpage, this may be information such as the last webpage update, the frequency at which the page is changed, and how significant the page is to add URLs in the website. 

Sitemaps can be created manually or through an automatic solution. The manual process involves creating their own sitemap.xm1 file and carefully mapping the URLs of your website, or one can use available online tools that help in generating a sitemap by merely entering the URL of your site, where the tool will make the sitemap for you to upload to your server. 

Why you need a sitemap 

  • There is a possibility of Google web crawlers to assume some or all of your recently updated or new pages while crawling.
  • Google gives the size of the site as one of the reasons why this is possible and hence the need for a sitemap,
  • Your website has too many pages that are not linked to each other or are isolated. This means they are not referencing each other and by listing these files in a sitemap decreases the chance of Google not overlooking these pages, 
  • Web crawlers such as Googlebot crawl your site using links from one page to another. Thus, if your site has scarce external links to it and it’s new, these crawlers might not discover it unless they are listed,
  • If your website has rich broadcasting material, is available in google bulletins, or makes use of other sitemaps-likeminded remarks, web crawlers can source out extra information from that which is listed in the sitemaps. 

Sitemap Procedure 

Since we are interested in the XML sitemap, this format aught to; use UTF-8 encoding, start with <urlset> tag for opening and end with <urlset> tag for closing, should specify the protocol standard (namespace) that is in the <urlset> tag, there should be a <url> entered for the existing URL as parent XML tag and you should contain a <loc> child entry for the <url> parent tag. The supplementary tags are voluntary and vary from search engine to the other. 

Thus, a basic sample embracing a single url should look like this;

<?xml version="1.0" encoding="UTF-8"?>

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
   <url>

      <loc>//www.tutsmake.com/</loc>

      <lastmod>2005-01-01</lastmod>

      <changefreq>monthly</changefreq>

      <priority>0.8</priority>
   </url>
</urlset>

It is an XML file holding you’re <url> for every page that exists in your site. A single XML file has the ability to hold up to fifty thousand archives, and you are given permission to separate them in order to use the index file to direct to the others. The above is outline as below; (let our website be tutsmake.com for the purpose of this article tutorial);

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
   <sitemap>
      <loc>http:// tutsmake.com /sitemap1.xml.gz</loc>
      <lastmod>2004-10-01T18:23:17+00:00</lastmod>
   </sitemap>
   <sitemap>
      <loc>http:// tutsmake.com /sitemap2.xml.gz</loc>
      <lastmod>2005-01-01</lastmod>
   </sitemap>
</sitemapindex>

Like the previous example, each <loc> directs to a folder that it has included in the<url> items.

Let’s follow the below steps and create search engine friendly sitemap.xml in laravel:

Building a Sitemap Controller

Assuming we are building a sitemap with four primary sections that are the goods categories, purchases, FAQ, and an inquiry. Each will have their individual file and will get index direct to them. First, we generate a sitemap controller.

php artisan make:controller SitemapController

Generate sitemap Index

The aim here is to create an index method, which should create the needed XML.  

public function index()
{
  $product= Product::all()->first();
  $faq= FAQ::all () ->first();
  $inquiry = inquiry::all () ->first();


  return response()->view('sitemap.index', [
      'product' => $product,
      'FAQ' => $faq,
      'Inquiry' => $inquiry,

  ])->header('Content-Type', 'text/xml');
}

All the four categories, goods, purchases, FAQ, and inquiry, are vital for generating the timestamp of the last modified. This will inform the web crawlers in case of new content.

The sitemap.xml file

<?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>

<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    <sitemap>
        <loc>https:// tutsmake.com /sitemap/products</loc>
    </sitemap>
    <sitemap>
        <loc>https:// tutsmake.com /sitemap/FAQ</loc>
    </sitemap>
    </sitemap>
  <loc>https:// tutsmake.com /sitemap/Inquiry</loc>

</sitemapindex>

The next step is generating URL for the existing files, this will mean, the controller getting four methods which are similar as illustrated below,

public function product()
{
    $products= Product::latest()->get();
    return response ()->view ('sitemap.product', [
        'products' => $products,
    ])->header ('Content-Type', 'text/xml');
}

public function faqs()
{
    $FAQ = FAQt::active()->orderBy('updated_at', 'desc')->get();
    return response()->view('sitemap.FAQ', [
        'FAQ' => $FAQ,
    ])->header('Content-Type', 'text/xml');
}

public function inquiry()
{
    $FAQ = inquiry ::active()->orderBy('updated_at', 'desc')->get();
    return response()->view('sitemap.inquiry ', [
        'inquiry ' => $ inquiry,
    ])->header('Content-Type', 'text/xml');
}

Now we need to create product.blade.php inside the folder name sitemap and put the below code into your

Than Your sitemap/product.blade.php should look like this:

<?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    @foreach ($prducts as $pro)
        <url>
            <loc>https://tutsmake.com/{{ $pro->uri }}</loc>
            <lastmod>{{ $post->publishes_at->tz('UTC')->toAtomString() }}</lastmod>
            <changefreq>weekly</changefreq>
            <priority>0.6</priority>
        </url>
    @endforeach
</urlset>

Next step would be to place and duplicate each of your sections, it should be ready upon adding your routes. For example, from the above it will look like:

Route::get('/sitemap.xml', 'SitemapController@index');
Route::get('/sitemap.xml/products', 'SitemapController@product');
Route::get('/sitemap.xml/FAQ', 'SitemapController@FAQ');
Route::get('/sitemap.xml/Inquiry', 'SitemapController@inquiry);

Close by informing the search engine crawlers of the protocol location. This can be achieved through using the submission interface, sending an HTTP request, or by stipulating the location/position in your website’s robot’s txt file.  Creating your own sitemap should not be difficult with Laravel.

Conclusion

In this article, you have learned how to create sitemap.xml in Laravel.

Author Bio

Kennith Fletcher currently working at Write My Essay service. He is professional blogger with over 5 years of experience in marketing, business development, and sales management. Also, he has succeeded in the areas of database management, data entry and project management.

Recommended Laravel Tutorial

  1. Laravel Tutorial From Scratch | Step By Step
  2. Laravel 6 Ajax CRUD(DataTables Js) Tutorial Example
  3. Laravel 6 – Ajax CRUD (Operation) Application Example
  4. Laravel 6 Angular JS CRUD Example Tutorial
  5. Upload Files/Images to Amazon s3 Cloud Using Laravel 6 Filesystem
  6. Laravel 6 CKEditor with Image Upload
  7. Ajax Image Upload In Laravel Tutorial Example From Scratch
  8. Laravel 6 Intervention Upload Image Using Ajax – Example
  9. Laravel Upload Image to Database with Validation
  10. Send Email Example Laravel
  11. Generate OR Create PDF In Laravel 6 Example
  12. Simple Generator or Create Qr Code Example Laravel
  13. Laravel Custom Cron Schedule Example Tutorial
  14. Laravel 6 Github Login Example
  15. Query Scope Laravel 6 Example Tutorial
  16. Laravel 6 Currency Exchange Rate Calculator
  17. Laravel 6 Create Newsletter Example Tutorial
  18. Get Next / Previous Record and Url In Laravel
  19. Laravel 6 Charts Example Tutorial | Pie Chart
  20. Laravel Get Record Last Week, Month, 15 Days, Year

AuthorDevendra Dode

Greetings, I'm Devendra Dode, a full-stack developer, entrepreneur, and the proud owner of Tutsmake.com. My passion lies in crafting informative tutorials and offering valuable tips to assist fellow developers on their coding journey. Within my content, I cover a spectrum of technologies, including PHP, Python, JavaScript, jQuery, Laravel, Livewire, CodeIgniter, Node.js, Express.js, Vue.js, Angular.js, React.js, MySQL, MongoDB, REST APIs, Windows, XAMPP, Linux, Ubuntu, Amazon AWS, Composer, SEO, WordPress, SSL, and Bootstrap. Whether you're starting out or looking for advanced examples, I provide step-by-step guides and practical demonstrations to make your learning experience seamless. Let's explore the diverse realms of coding together.

Leave a Reply

Your email address will not be published. Required fields are marked *