2017-04-12 11 views
1

私はhttp://example.com/sitemap.xmlにアクセスしようとすると、私はhttp://example.comlaravelルーティングからサイトマップURLを無視するにはどうすればよいですか?

のルートディレクトリにsitemap.xmlを持っています。明らかにルートが見つかりませんでした。使用中の

Options +SymLinksIfOwnerMatch 
RewriteEngine On 
RewriteCond %{REQUEST_URI} !^/sitemap.xml 
RewriteRule^index.php [L] 

Laravelバージョン:5.1

しかし、運

だから、これを試してみることのように見えるように.htaccessを変更しました。私は単にルートから提供するのではなく、手動で生成されたxmlファイルを使用しレンダリングすることができますか?私はここで複雑なXML解析理論を探していません。特定のルーティングから脱出するためにフックを試してみてください。どんな助けでも大歓迎です。

答えて

2

sitemap.xmlファイルをパブリックディレクトリに移動するのが最善の方法です。ルーティングについても心配する必要はありません。

そして、自動的にあなたが動的に生成されたサイトマップを返しルートを作成することができますhttp://example.com/sitemap.xml

1

としてアクセスできるようになります。必ずしもファイルを返す必要はありません。

例:

あなたのルート:

Route::get('sitemap.xml', 'App\\Controllers\\[email protected]'); 

あなたSitemapController:

public function index() 
{ 

    $urls = Logic::getMyUrlsToMap(); 
    return view('site.home.sitemap', compact('urls')); 

} 

ロジック:: getMyUrlsToMap()はそのURLを検索するために、あなたのロジックですマップされます。

あなた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>