Laravel homestead, nginx & dynamic robots.txt

Bij het gebruik van Laravel 5 is homestead een zeer handige tool om te gebruiken. Binnen enkele minuten heb je een omgeving waar je in kan werken allemaal mooi geconfigureerd en op basis van Nginx. Voor het maken van een robots.txt is de makkelijkste oplossing om het bestand zo aan te maken en in te laden. Maar wat als je hem dynamisch aan wil laten maken?

Dynamisch je robots.txt maken

Via een controller kan je de robots.txt opbouwen en als een response terug sturen.

$var = '__contentforrobotstxt_';
return \Response::make($var, '200')->header('Content-Type', 'text/plain');

Hierbij heb je geen hardcoded robots.txt meer nodig en wordt hij iedere keer dynamisch opgebouwd. Op dat moment gaat nginx alleen helaas zeuren en geeft je een hele mooie 404 error. In de nginx configuratie staat een regel die er zo uit ziet.

location = /robots.txt { access_log off; log_not_found off; }

Het probleem zit in het location = /robots.txt

Het = teken betekent wanneer het verzoek gelijk staat, voer alleen deze regels uit en niet meer. Wanneer je een robots.txt hebt, dan wordt hij ingeladen zonder problemen. Maar zodra hij niet bestaat stuurt nginx een 404 terug.

De uiteindelijke oplossing is heel simpel. Het verwijderen van die regel in het nginx configuratie bestand. Deze is te vinden in /etc/nginx/sites-available/. Vergeet na het verwijderen alleen niet nginx opnieuw op te starten met ‘service nginx restart’.

Ps. Eventueel kun je ook de standaard response veranderen (Zie oplossing 1 van https://trepmal.com/2014/03/28/nginx-robots-txt-and-copy-pasta/)

Geef een reactie

Jouw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *