我正在使用Google的网站站长工具以及一些手工制作的脚本,将404记录到数据库中以获取所有错误的链接,并将结果放入我的.htaccess文件中更正的301重定向。
似乎.htaccess的成长和增长,这肯定是另一个我目前无法影响的问题的原因。
我想知道(为了保持.htaccess的大小尽可能小以便于阅读),是否有工具或任何方法来跟踪这些重定向的使用情况?!
所以过了一段时间我可能会在他们不再需要的时候把它们拿出来,在Googles索引更新和我自己对错误链接的更改过程中。有什么想法吗?
答案 0 :(得分:2)
您应该将任何不可记录的请求重写为PHP脚本来处理这个问题,然后您就可以对数据执行任何操作。
在你的.htaccess添加中(在你有任何其他重写规则之后):
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* /404.php?uri=$0 [L]
在404.php
做类似的事情(半伪代码):
// Get the redirect mapping for this URI from the database
$query = "
SELECT location
FROM redirects
WHERE uri = ?
";
$redirect = $db->query($query, $_GET['uri']);
if ($redirect) {
// Update database with tracking data
$query = "
UPDATE redirects
SET
hits = hits + 1,
lastHit = NOW()
WHERE uri = ?
";
$db->query($query, $_GET['uri']);
// Do the redirect
header($_SERVER['SERVER_PROTOCOL'] . ' 301 Moved Permanently');
header('Location: ' . $redirect);
} else {
// Really not found
header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found');
}
答案 1 :(得分:0)
为了保持.htaccess较小,您可以使用RewriteMap
,例如txt
或dbm
。
Apache access.log
应该已经跟踪了请求。要查看,如果仍然使用这些链接,您可以将access.log
中的条目与RewriteMap
文本文件进行比较。
为了便于比较,您还可以添加其他CustomLog
,仅跟踪网址路径
CustomLog ${APACHE_LOG_DIR}/tracker.log %U
或
CustomLog ${APACHE_LOG_DIR}/tracker.log "%U %t"
如果您还需要访问时间。