2016-03-24 21 views
2

laravelを使用して動的sitemap.xmlルートを作成しました。これはxml応答を返します。Laravelルートは動作しますが、404ステータスを返します

ルートはブラウザで動作しますが、404ステータスを返します。

これは404のステータスを返すだけルート

これらヘッダーあるである:

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 

これはルートある:

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

このコントロールR応答

$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; 

ビュー

<?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 

ありがとうございました。

答えて

0

Nginxの問題でした。

私は、configファイルにこのコードを追加し、今では動作します:

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

そして、私は応答から<?xml version="1.0" encoding="UTF-8"?>を削除しました。

関連する問題