检查PHP中是否存在URL

检查PHP中是否存在URL,php,Php,如果我在PHP中显示一个URL链接,是否有任何方法在用户单击后检查其有效性,以便向用户显示一条漂亮的自定义消息,说明URL已损坏或类似情况 我不是指404页的错误。我猜错误404只适用于内部网站页面,而不适用于外部链接。如果我错了,请纠正我。404用于未找到的任何资源。如果链接指向一个链接,则该资源不存在的服务器的任务是向您发送此消息。引述: 10.4.5 404未找到 服务器没有找到任何东西 匹配请求URI。不 给出了以下指示,即 这种情况是暂时的或永久的。 410(消失)状态代码应为 如果服

如果我在PHP中显示一个URL链接,是否有任何方法在用户单击后检查其有效性,以便向用户显示一条漂亮的自定义消息,说明URL已损坏或类似情况


我不是指404页的错误。我猜错误404只适用于内部网站页面,而不适用于外部链接。如果我错了,请纠正我。

404用于未找到的任何资源。如果链接指向一个链接,则该资源不存在的服务器的任务是向您发送此消息。引述:

10.4.5 404未找到

服务器没有找到任何东西 匹配请求URI。不 给出了以下指示,即 这种情况是暂时的或永久的。 410(消失)状态代码应为 如果服务器知道,通过一些 内部可配置机制, 一个旧的资源是永久的 不可用且没有转发 住址此状态代码通常为 当服务器不希望 确切地揭示请求失败的原因 被拒绝,或没有其他 答复是适用的

此外,单击浏览器中的链接会在PHP处理完页面后很久发生。PHP是服务器端,而用户交互在用户的计算机上完全独立于此。因此,没有办法用PHP捕捉点击

如果您想捕获点击(从技术上讲不是这样),您必须将所有外部链接路由到您自己的Web服务器,该服务器可以通过预取链接来查看资源是否存在。如果没有,您可以向用户显示自己的自定义页面。但请记住,这实际上是在执行两个HTTP请求。首先从用户到服务器,然后从服务器到外部页面,您的外部链接可能如下所示:

http://www.yourserver.com/external.php?url=example.com/someuri

404用于未找到的任何资源。如果链接指向一个链接,则该资源不存在的服务器的任务是向您发送此消息。引述:

10.4.5 404未找到

服务器没有找到任何东西 匹配请求URI。不 给出了以下指示,即 这种情况是暂时的或永久的。 410(消失)状态代码应为 如果服务器知道,通过一些 内部可配置机制, 一个旧的资源是永久的 不可用且没有转发 住址此状态代码通常为 当服务器不希望 确切地揭示请求失败的原因 被拒绝,或没有其他 答复是适用的

此外,单击浏览器中的链接会在PHP处理完页面后很久发生。PHP是服务器端,而用户交互在用户的计算机上完全独立于此。因此,没有办法用PHP捕捉点击

如果您想捕获点击(从技术上讲不是这样),您必须将所有外部链接路由到您自己的Web服务器,该服务器可以通过预取链接来查看资源是否存在。如果没有,您可以向用户显示自己的自定义页面。但请记住,这实际上是在执行两个HTTP请求。首先从用户到服务器,然后从服务器到外部页面,您的外部链接可能如下所示:

http://www.yourserver.com/external.php?url=example.com/someuri

简而言之,答案是否定的

单击链接会导致用户的浏览器从其承载的服务器请求资源。您的服务器没有参与

您可以编写一些JavaScript来取消链接的正常行为,使用Ajax向服务器发出请求,让服务器上的PHP向第三方站点发出请求以检查响应,响应Ajax请求,然后将
location
设置为原始URL或错误消息的URL…但这将大大降低用户的性能


如果您担心您提供的链接被破坏,请定期检查它们。您可以自动执行此操作(例如使用)

简而言之,答案是-no

单击链接会导致用户的浏览器从其承载的服务器请求资源。您的服务器没有参与

您可以编写一些JavaScript来取消链接的正常行为,使用Ajax向服务器发出请求,让服务器上的PHP向第三方站点发出请求以检查响应,响应Ajax请求,然后将
location
设置为原始URL或错误消息的URL…但这将大大降低用户的性能


如果您担心您提供的链接被破坏,请定期检查它们。您可以自动执行此操作(例如使用)

您应该先使用fsockopen查找链接的响应代码,然后在小于400时显示它。看见也许最好的办法是在断开的链接旁边显示一个警告(通过CSS或javascript很容易实现)。

您应该先使用fsockopen查找链接的响应代码,然后在小于400时显示它。看见也许最好的办法是在断开的链接旁边显示一个警告(通过CSS或javascript很容易实现)。

我的建议:编写一个PHP批处理作业,定期检查URL(使用curl或fsockopen)并在数据中标记它们。这样,在向用户显示URL之前,您就知道URL已被破坏。

我的建议:编写一个PHP批处理作业,定期检查URL(使用curl或fsockopen)并在数据中标记它们。这样,在将URL显示给用户之前,您就知道URL已被破坏。手动滚动您自己的HTTP堆栈?只使用cURL函数获取头不是更简单吗?@symcbean使用内置的get_headers()函数()手动滚动您自己的HTTP堆栈会更简单?如果只使用cURL函数来获取标题,不是更简单吗?@symcbean使用内置的get_headers()函数()会更简单