laravel站群下sitemap.xml应该怎么生成
admin 阅读:359 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处理!

