@webnumseoagent/next 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client.ts +8 -2
- package/dist/client.js +7 -2
- package/package.json +1 -1
package/client.ts
CHANGED
|
@@ -303,8 +303,14 @@ export async function seoRobots(): Promise<MetadataRoute.Robots> {
|
|
|
303
303
|
// return new Response(await seoRobotsTxt(), { headers: { "content-type": "text/plain" } });
|
|
304
304
|
// }
|
|
305
305
|
// Fail-safe: при недоступности платформы отдаём разрешающий robots (никогда не Disallow: /).
|
|
306
|
+
// Маркер-комментарий в начале robots.txt — чтобы платформа могла определить, что robots отдаёт
|
|
307
|
+
// наш адаптер, даже когда Vercel обслуживает роут как ISR-статик и срезает заголовок x-seoagent-robots
|
|
308
|
+
// (по телу — надёжно). Комментарий безвреден: краулеры игнорируют строки, начинающиеся с #.
|
|
309
|
+
const ROBOTS_MARK = "# SEO Agent\n";
|
|
310
|
+
const withRobotsMark = (t: string) => (t.startsWith(ROBOTS_MARK) ? t : ROBOTS_MARK + t);
|
|
311
|
+
|
|
306
312
|
export async function seoRobotsTxt(): Promise<string> {
|
|
307
|
-
const FALLBACK = "User-agent: *\nAllow: /\n";
|
|
313
|
+
const FALLBACK = withRobotsMark("User-agent: *\nAllow: /\n");
|
|
308
314
|
if (!API || !SITE || !TOKEN) return FALLBACK;
|
|
309
315
|
try {
|
|
310
316
|
const r = await fetch(`${API}/api/seo/${SITE}/robots.txt`, {
|
|
@@ -313,7 +319,7 @@ export async function seoRobotsTxt(): Promise<string> {
|
|
|
313
319
|
signal: AbortSignal.timeout(5000),
|
|
314
320
|
});
|
|
315
321
|
if (!r.ok) return FALLBACK;
|
|
316
|
-
return await r.text();
|
|
322
|
+
return withRobotsMark(await r.text());
|
|
317
323
|
} catch {
|
|
318
324
|
return FALLBACK;
|
|
319
325
|
}
|
package/dist/client.js
CHANGED
|
@@ -305,8 +305,13 @@ async function seoRobots() {
|
|
|
305
305
|
// return new Response(await seoRobotsTxt(), { headers: { "content-type": "text/plain" } });
|
|
306
306
|
// }
|
|
307
307
|
// Fail-safe: при недоступности платформы отдаём разрешающий robots (никогда не Disallow: /).
|
|
308
|
+
// Маркер-комментарий в начале robots.txt — чтобы платформа могла определить, что robots отдаёт
|
|
309
|
+
// наш адаптер, даже когда Vercel обслуживает роут как ISR-статик и срезает заголовок x-seoagent-robots
|
|
310
|
+
// (по телу — надёжно). Комментарий безвреден: краулеры игнорируют строки, начинающиеся с #.
|
|
311
|
+
const ROBOTS_MARK = "# SEO Agent\n";
|
|
312
|
+
const withRobotsMark = (t) => (t.startsWith(ROBOTS_MARK) ? t : ROBOTS_MARK + t);
|
|
308
313
|
async function seoRobotsTxt() {
|
|
309
|
-
const FALLBACK = "User-agent: *\nAllow: /\n";
|
|
314
|
+
const FALLBACK = withRobotsMark("User-agent: *\nAllow: /\n");
|
|
310
315
|
if (!API || !SITE || !TOKEN)
|
|
311
316
|
return FALLBACK;
|
|
312
317
|
try {
|
|
@@ -317,7 +322,7 @@ async function seoRobotsTxt() {
|
|
|
317
322
|
});
|
|
318
323
|
if (!r.ok)
|
|
319
324
|
return FALLBACK;
|
|
320
|
-
return await r.text();
|
|
325
|
+
return withRobotsMark(await r.text());
|
|
321
326
|
}
|
|
322
327
|
catch {
|
|
323
328
|
return FALLBACK;
|
package/package.json
CHANGED