mirror of https://github.com/Mai-with-u/MaiBot.git
添加 robots.txt 路由,禁止搜索引擎索引,增强隐私保护;为 HTML 文件添加防索引头
parent
6055b087f0
commit
c2a6d491c6
|
|
@ -92,23 +92,46 @@ class WebUIServer:
|
||||||
logger.warning("💡 请确认前端已正确构建")
|
logger.warning("💡 请确认前端已正确构建")
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# robots.txt - 禁止搜索引擎索引
|
||||||
|
@self.app.get("/robots.txt", include_in_schema=False)
|
||||||
|
async def robots_txt():
|
||||||
|
"""返回 robots.txt 禁止所有爬虫"""
|
||||||
|
from fastapi.responses import PlainTextResponse
|
||||||
|
content = """User-agent: *
|
||||||
|
Disallow: /
|
||||||
|
|
||||||
|
# MaiBot Dashboard - 私有管理面板,禁止索引
|
||||||
|
"""
|
||||||
|
return PlainTextResponse(
|
||||||
|
content=content,
|
||||||
|
headers={"X-Robots-Tag": "noindex, nofollow, noarchive"}
|
||||||
|
)
|
||||||
|
|
||||||
# 处理 SPA 路由 - 注意:这个路由优先级最低
|
# 处理 SPA 路由 - 注意:这个路由优先级最低
|
||||||
@self.app.get("/{full_path:path}", include_in_schema=False)
|
@self.app.get("/{full_path:path}", include_in_schema=False)
|
||||||
async def serve_spa(full_path: str):
|
async def serve_spa(full_path: str):
|
||||||
"""服务单页应用 - 只处理非 API 请求"""
|
"""服务单页应用 - 只处理非 API 请求"""
|
||||||
# 如果是根路径,直接返回 index.html
|
# 如果是根路径,直接返回 index.html
|
||||||
if not full_path or full_path == "/":
|
if not full_path or full_path == "/":
|
||||||
return FileResponse(static_path / "index.html", media_type="text/html")
|
response = FileResponse(static_path / "index.html", media_type="text/html")
|
||||||
|
response.headers["X-Robots-Tag"] = "noindex, nofollow, noarchive"
|
||||||
|
return response
|
||||||
|
|
||||||
# 检查是否是静态文件
|
# 检查是否是静态文件
|
||||||
file_path = static_path / full_path
|
file_path = static_path / full_path
|
||||||
if file_path.is_file() and file_path.exists():
|
if file_path.is_file() and file_path.exists():
|
||||||
# 自动检测 MIME 类型
|
# 自动检测 MIME 类型
|
||||||
media_type = mimetypes.guess_type(str(file_path))[0]
|
media_type = mimetypes.guess_type(str(file_path))[0]
|
||||||
return FileResponse(file_path, media_type=media_type)
|
response = FileResponse(file_path, media_type=media_type)
|
||||||
|
# HTML 文件添加防索引头
|
||||||
|
if str(file_path).endswith('.html'):
|
||||||
|
response.headers["X-Robots-Tag"] = "noindex, nofollow, noarchive"
|
||||||
|
return response
|
||||||
|
|
||||||
# 其他路径返回 index.html(SPA 路由)
|
# 其他路径返回 index.html(SPA 路由)
|
||||||
return FileResponse(static_path / "index.html", media_type="text/html")
|
response = FileResponse(static_path / "index.html", media_type="text/html")
|
||||||
|
response.headers["X-Robots-Tag"] = "noindex, nofollow, noarchive"
|
||||||
|
return response
|
||||||
|
|
||||||
logger.info(f"✅ WebUI 静态文件服务已配置: {static_path}")
|
logger.info(f"✅ WebUI 静态文件服务已配置: {static_path}")
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue