Add site map and search engine robots
An attempt to generate and write the sitemap.xml file to the root directory results in the following error:
1
Please make sure that "/" is writable by the web-server.
With Magento Commerce Cloud, you can only write to specific directories, such as var, pub/media, pub/static, or app/etc. When you generate the sitemap.xml file using the Admin panel, you must specify the /media/ path.
For version 2.1.11 and later, you do not have to generate a robots.txt because it generates on demand and stores the contents in the database. It does not create a file, but you can view the content in your browser with the url: <domain.your.project>/robots.txt
This requires ECE-Tools version 2002.0.12 and later with an updated .magento.app.yaml file. See an example of these rules in the magento-cloud repository.
To generate a sitemap.xml file in version 2.1.11 and later:
- Access the Magento Admin panel.
- On the Marketing menu, click Site Map in the SEO & Search section.
- In the Site Map view, click Add Sitemap.
-
In the New Site Map view, enter the following values:
- Filename:
sitemap.xml - Path:
/media/
- Filename:
- Click Save & Generate. The new site map becomes available in the Site Map grid.
- Click the path in the
Link for Googlecolumn.
To add content to the robots.txt file:
- Access the Magento Admin panel.
- On the Stores menu, click Configuration in the Settings section.
- In the General list, click Design.
- In the Search Engine Robots view, click Reset to Defaults. This populates the Edit custom instruction of robots.txt field.
- Click Save Config.
- Verify the file in your browser with the url:
<domain.your.project>/robots.txt
Your robots.txt file appears in the <magento_root>/app/pub/media/ folder.
For versions earlier than 2.1.10, you must use the pub/media path. When you generate the robots.txt file using the Magento Admin Panel—Stores > Settings:Configuration > General:Design—it stores the contents in the database and creates an actual file.
Rewrite using Fastly VCL snippet
If you have different domains and you need separate site maps, you can create a VCL to route to the proper sitemap. Generate the sitemap.xml file in the Magento Admin panel as described above, then create a custom Fastly VCL snippet to manage the redirect. See Custom Fastly VCL snippets.
To use a Fastly VCL snippet for redirect:
Create a custom VCL snippet to rewrite the path for sitemap.xml to /media/sitemap.xml using the type and content key-value pairs.
1
2
3
4
5
6
7
{
"name": "sitemapxml_rewrite",
"dynamic": "0",
"type": "recv",
"priority": "90",
"content": "if ( req.url.path ~ \"^/?sitemap.xml$\" ) { set req.url = \"/media/sitemap.xml\"; }"
}
When you upgrade from Magento version 2.1 to version 2.2, enter a Support ticket to remove any existing redirects for these files.