我为 Laravel 网站创建了一个小型站点地图。由于它的 MVC 拱结构保持不变。
路由部分:
Route::get('/sitemap', ['as' => 'Sitemap index', 'uses' => 'SiteMapController@index']);
Route::get('/sitemap/page', ['as' => 'Sitemap page', 'uses' => 'SiteMapController@page']);
查看第二部分文件 Index.php 这将是主站点地图索引文件
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/siteindex.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc><?php echo url('/') ?>/sitemap/page</loc>
<lastmod><?php echo date('c', time()); ?></lastmod>
</sitemap>
<sitemap>
<loc><?php echo url('/') ?>/sitemap/exchanges</loc>
<lastmod><?php echo date('c', time()); ?></lastmod>
</sitemap>
page.php 这是单个 urlset 的附件文件
<?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<?php foreach ($posts as $post) { ?>
<url><loc><?php echo url('/') ?>/<?php echo $post['uri']; ?></loc><lastmod><?php echo $post['time']; ?></lastmod> <changefreq><?php echo $post['freequency']; ?></changefreq>
<priority><?php echo $post['priority']; ?></priority>
</url>
<?php } ?>
</urlset>
现在,控制器,在您运行 show:SitemapController.php 的地方,您可以根据您在内容中提供的更新的频率和新鲜度来更改时间。
class SiteMapController extends Controller {
public function index() {
return response()->view('sitemap.index')->header('Content-Type', 'text/xml');
}
public function page() {
$posts = array(
array("uri" => "", "time" => date('c', time()), "freequency" => "Daily", "priority" => "0.8"),
array("uri" => "about-us", "time" => "2018-08-17", "freequency" => "Monthly", "priority" => "0.5"),
array("uri" => "contact-us", "time" => "2018-08-17", "freequency" => "Monthly", "priority" => "0.5"),
array("uri" => "privacy-policy", "time" => "2018-08-17", "freequency" => "Monthly", "priority" => "0.5"),
array("uri" => "cookie-policy", "time" => "2018-08-17", "freequency" => "Monthly", "priority" => "0.5"),
array("uri" => "thank-you", "time" => "2018-08-17", "freequency" => "Monthly", "priority" => "0.5"),
);
return response()->view('sitemap.page', ['posts' => $posts])->header('Content-Type', 'text/xml');
}
}