2016-03-24 3 views
2

Ich habe eine dynamische sitemap.xml Route mit Laravel erstellt, die eine XML-Antwort zurückgibt.Laravel Route funktioniert, aber gibt 404 Status

Die Route Arbeiten auf dem Browser, aber es gibt einen 404 Status.

Dies ist der einzige Weg, der eine 404-Status

kehrt Dies sind die Header:

Cache-Control →no-cache 
Connection →keep-alive 
Content-Length →232 
Content-Type →text/xml; charset=UTF-8 
Date →Thu, 24 Mar 2016 09:44:35 GMT 
Server →nginx/1.9.12 

Dies ist die Route: Dieses

Route::get('sitemap.xml', ['as' => 'sitemap.index', 'uses' => '[email protected]']); 

ist die Kontrolle r Antwort:

$response = response()->view('sitemaps.index', [ 
     'last' => $data, 
     'modules' => $modules, 
     'app'  => $app, 
    ])->header('Content-Type', 'text/xml'); 

    $response->header('Content-Length',strlen($response->getOriginalContent())); 

    return $response; 

Der Blick:

<?xml version="1.0" encoding="UTF-8"?> 
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 
@foreach($modules as $module) 
    <sitemap> 
     <loc>{{ url('sitemap-' . $module . '.xml') }}</loc> 
     <lastmod>{{ $last[$module]['updated_at'] or date('Y').'-01-01'}}</lastmod> 
    </sitemap> 
@endforeach 

Danke.

Antwort

0

Es war ein Nginx-Problem.

Ich habe diesen Code auf meine Config-Datei und jetzt funktioniert es:

location = /sitemap.xml { 
    try_files $uri $uri/ /index.php?$query_string; 
    access_log off; 
    log_not_found off; 
} 

Und ich entfernte die <?xml version="1.0" encoding="UTF-8"?> aus der Antwort.