2017-04-12 63 views
1

我在的根目錄中有sitemap.xml如何忽略從laravel路由網站地圖網址?

當我嘗試訪問http://example.com/sitemap.xml時。它顯然會拋出路徑未找到錯誤。

所以嘗試這種改變.htaccess的樣子:

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

Laravel使用的版本:5.1

但是,沒有運氣。我如何才能使用和呈現手動生成的XML文件,而不是從路由服務?我不在這裏尋找複雜的XML解析理論。只是嘗試一個鉤子從特定的路由中逃脫。任何幫助都感激不盡。

回答

2

最好的方法是將sitemap.xml文件移動到public目錄。您甚至不必擔心路由。

然後,它會自動訪問爲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()是你的邏輯來搜索網址將被映射。

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