Tengo sitemap.xml en el directorio raíz de http://example.com
Cuando intento acceder a http://example.com/sitemap.xml . Obviamente arroja un error de ruta no encontrada.
Entonces, para probar esto, cambió .htaccess para que se vea así:
Options +SymLinksIfOwnerMatch RewriteEngine On RewriteCond %{REQUEST_URI} !^/sitemap.xml RewriteRule ^ index.php [L]Versión de Laravel en uso: 5.1.
Pero, sin suerte. ¿Cómo puedo usar y renderizar un archivo XML generado manualmente en lugar de servirlo desde la ruta? No estoy buscando una teoría de análisis XML compleja aquí. Solo intento un gancho para escapar de la ruta específica.
El mejor enfoque es mover el archivo sitemap.xml al directorio público . Ni siquiera tiene que preocuparse por el enrutamiento.
Entonces será automáticamente accesible como http://example.com/sitemap.xml
Puede crear una ruta que devuelva el mapa del sitio generado dinámicamente. No necesariamente necesita devolver un archivo.
Ex.:
Tus rutas:
Route::get('sitemap.xml', 'App\\Controllers\\SiteMapController@index');Su SitemapController:
public function index() { $urls = Logic::getMyUrlsToMap(); return view('site.home.sitemap', compact('urls')); }Logic::getMyUrlsToMap() es su lógica para buscar las direcciones URL que se asignarán.
Su vista site.home.sitemap:
<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> @if($urls) @foreach($urls as $url) <url> <loc>{{$url}}</loc> </url> @endforeach @endif </urlset>