laravel站群下sitemap.xml应该怎么生成
admin 阅读:77 2024-02-22
如果每个域名的
sitemap.xml
文件内容不同,并且你希望在同一个项目下管理这些不同的sitemap.xml
,你可以通过在每个域名的路由中动态生成相应的sitemap.xml
来实现。以下是一个简单的示例:
// routes/web.php use Illuminate\Support\Facades\Route; use App\Http\Controllers\SitemapController; // 定义sitemap.xml路由 Route::get('/sitemap.xml', [SitemapController::class, 'index']); // 其他路由...
// app/Http/Controllers/SitemapController.php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Response; use App\Models\Post; class SitemapController extends Controller { public function index(Request $request) { // 根据请求的域名或其他条件,获取相应的文章列表 $domain = $request->getHost(); $posts = Post::where('domain', $domain)->get(); // 生成sitemap内容 $sitemapContent = '<?xml version="1.0" encoding="UTF-8"?>' . PHP_EOL; $sitemapContent .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . PHP_EOL; foreach ($posts as $post) { $url = 'https://' . $domain . '/post/' . $post->id; $sitemapContent .= '<url>' . PHP_EOL; $sitemapContent .= '<loc>' . $url . '</loc>' . PHP_EOL; $sitemapContent .= '</url>' . PHP_EOL; } $sitemapContent .= '</urlset>'; // 返回XML响应 return Response::make($sitemapContent, 200, [ 'Content-Type' => 'text/xml' ]); } }在这个示例中,我们首先定义了一个
/sitemap.xml
的路由,然后根据请求的域名在SitemapController
中动态生成相应的sitemap.xml
内容。这样,不同域名的请求都会根据其对应的内容生成相应的sitempa.xml
,从而达到区分不同域名的目的。声明
1、部分文章来源于网络,仅作为参考。 2、如果网站中图片和文字侵犯了您的版权,请联系1943759704@qq.com处理!