问题是我在我的网站上有很多exetrnal下载链接,而且有些链接过期了,所以我想自动检测过期的链接。
对我来说,有效链接是指向我的一个文件服务器的直接文件下载链接。 断开的链接会导致出现一个带有错误消息的简单html页面。
我的第一个想法是获取下载链接的html源代码,看看它是否包含错误,但它不起作用。 我也试过javascript,但问题是js不处理外部链接。
任何想法? 非常感谢
答案 0 :(得分:2)
这不是前端的任务,而是后端的任务。正如超新星所说,每天从您的服务器检查一次。 AJAX请求不是您的答案,因为browser security policy不允许对不同域的请求。
解决方案:
好的,根据您的评论,请检查此解决方案:
<html>
<head>
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'></script>
<script>
$(document).ready(function(){
var linksDiv = $('#links');
$('#generateLinks').click(function(){
//I don't know your logic for this function, so I'll try to reproduce the same behavior
var someURLs = ['http://www.google.com','http://www.djfhdkjshjkfjhk.com', 'http://www.yahoo.com'];
linksDiv.html('');
for(var i = 0; i < someURLs.length; i++){
var link = $('<a/>').attr('href', someURLs[i]).append('link ' + i).css('display','block');
linksDiv.append(link);
}
});
$('#getLinksAndSend').click(function(){
var links = linksDiv.find('a');
var gatheredLinks = [];
$(links).each(function(){
gatheredLinks.push(this.href);
});
sendLinks(gatheredLinks);
});
var sendLinks = function(links){
$.ajax({
url: "your_url",
type: "POST",
data: {
links: links
}
}).done(function(resp) {
alert('Ok!')
});
}
});
</script>
</head>
<body>
<div id="links">
</div>
<button id="generateLinks">Generate all links</button>
<button id="getLinksAndSend">Get links and send to validator</button>
</body>
</html>
答案 1 :(得分:2)
如果您不介意让客户端完成工作,您可以尝试使用javascript。
我有一个greasemonkey脚本,可以自动检查打开页面中的所有链接,并根据服务器响应(未找到,禁止等)标记它们。
看看你是否可以从中获得一些想法:http://userscripts.org/scripts/show/77701
我知道跨域策略不适用于GM_xmlhttprequest,如果想要使用javascript解决方案,可能需要尝试一种解决方法,例如:
如果您需要服务器端解决方案,我相信上述答案可以帮助您。
答案 2 :(得分:0)
它可能有点矫枉过正,但linux kde中有一个名为klinkstatus的程序可以在网站中找到损坏的链接: