sitemap.xml
当我尝试访问http://example.com/sitemap.xml时。它显然会抛出路径未找到错误。
所以试试这个改为.htaccess
看起来像:
Options +SymLinksIfOwnerMatch
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/sitemap.xml
RewriteRule ^ index.php [L]
使用的Laravel版本:5.1。
但是,没有运气。我怎样才能使用和渲染手动生成的XML文件而不是从路由提供服务?我不是在寻找复杂的XML解析理论。只是尝试一个钩子逃脱特定的路由。
答案 0 :(得分:4)
最好的方法是将sitemap.xml文件移动到 public 目录。您甚至不必担心路由。
然后它将自动显示为http://example.com/sitemap.xml
答案 1 :(得分:1)
您可以创建返回动态生成的站点地图的路线。您不一定需要返回文件。
例:
您的路线:
public function index()
{
$urls = Logic::getMyUrlsToMap();
return view('site.home.sitemap', compact('urls'));
}
您的SitemapController:
<?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>
Logic :: getMyUrlsToMap()是您搜索将要映射的网址的逻辑。
您的site.home.sitemap查看:
$('body').on('click', '.header_mobile_menu .menu-item-has-children a', function(e) {
e.preventDefault();
var $subMenu = $(this).siblings('.sub-menu');
var visible = $subMenu.is(':visible');
if( visible ) $subMenu.fadeOut(0);
else $subMenu.fadeIn(0);
});