由于维基百科的规模,我对这个话题很感兴趣。在一个小站点中创建一些 cron 来定期更新站点地图可能很容易,但是一个大站点呢?所以:
维基百科如何生成它的站点地图?
我有一个“内容”网站,一些窃贼和 419 骗子喜欢积极地爬行,这也会产生成本和性能问题。:(我别无选择:我需要阻止他们访问站点地图文件和索引。:(
我正在做与 Facebook 相同的事情:我即时生成站点地图索引 (/sitemap.php)。我使用 DNS 反向查找 (PHP) 和代理检查(与 Stackoverflow 相同)将“好”爬虫列入白名单。为了防止列入白名单的引擎使站点地图索引内容公开,我添加了该标题(Stackoverflow 忘记了):
header('Content-type: application/xml; charset="UTF-8"', true);
header('Pragma: no-cache');
header('X-Robots-Tag: NOARCHIVE');
Run Code Online (Sandbox Code Playgroud)
问题 1:我是否缺少保护站点地图索引文件的内容?
问题 2:问题来自生成的静态站点地图 (.xml.gz) 文件。我怎样才能保护他们?即使它们的名称“难以猜测”,也可以通过简单的谷歌查询轻松找到它们(例如:“ site:stackoverflow.com filetype:xml ”),而且我对 .htaccess 的访问非常有限。
编辑:这不是服务器配置问题。首选语言是 PHP。
编辑 2:对不起,这是纯粹的程序问题,但它已从 SO 转移,我无法关闭/删除它。:(
我想将所有 URL 从一个域重定向到另一个域。一些旧的 URL 有新的对应项,其中包含要重定向到的特定页面。所有其他 URL 应重定向到新域的主页。
但我不想重定向sitemap.xml. 所以我做了这样的例外(来自这里):
RewriteCond %{REQUEST_URI} !^/sitemap.xml?$
Run Code Online (Sandbox Code Playgroud)
但这不起作用。
这是我的完整代码:
RewriteEngine on
# exception for the sitemap:
RewriteCond %{REQUEST_URI} !^/sitemap.xml?$
# specific redirects:
Redirect 301 /old-page https://www.new-domain.com/
# catch the rest:
RedirectMatch 301 ^/ https://www.new-domain.com/
Run Code Online (Sandbox Code Playgroud)
有什么不对?