You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Wake-on-Lan脚本可正常唤醒设备,点击按钮后浏览器跳404如何解决?

解决点击唤醒按钮后跳转404的问题

核心问题在于PHP脚本的跳转路径错误,同时HTML按钮与a标签的嵌套写法存在行为冲突风险。以下是两种可行解决方案:

方案一:修正跳转路径(快速解决)

1. 修复PHP的跳转逻辑

你的PHP文件位于scripts/目录下,原代码里的header("Location:index.html")会尝试访问scripts/index.html,但主页实际在网站根目录。修改为绝对路径或正确的相对路径:

<?php
// 执行Python脚本(注意确认wake.py8文件名是否正确,避免笔误)
system("python /var/www/html/scripts/python/wake.py8 [Variable1] [Variable2]");
// 跳转到根目录的index.html
header("Location: /index.html");
exit; // 确保后续代码不执行,避免跳转失效
?>

或者使用相对路径:

header("Location: ../index.html");

2. 规范HTML按钮写法

避免button嵌套a标签的不规范写法,改为a标签包裹button:

<tr>
    <td>
        <a href="scripts/wol.php">
            <button><img src="images/action_start.jpg" alt="Computer 2" style="width:50px;"></button>
        </a>
    </td>
</tr>

方案二:AJAX异步请求(推荐,无页面跳转)

这种方式点击按钮后不会刷新或跳转页面,后台静默执行唤醒逻辑,体验更流畅。

1. 修改HTML代码

替换原按钮为带点击事件的按钮,并添加JS异步请求逻辑:

<tr>
    <td>
        <button onclick="wakeDevice()"><img src="images/action_start.jpg" alt="Computer 2" style="width:50px;"></button>
    </td>
</tr>

<script>
function wakeDevice() {
    fetch('scripts/wol.php')
        .then(res => {
            if (res.ok) {
                alert('唤醒指令已发送');
            } else {
                alert('指令发送失败,请检查');
            }
        })
        .catch(err => {
            console.error('请求错误:', err);
            alert('请求出错');
        });
}
</script>

2. 简化PHP代码

不需要跳转逻辑,直接执行脚本并返回状态:

<?php
system("python /var/www/html/scripts/python/wake.py8 [Variable1] [Variable2]");
echo "success";
?>

额外检查点

  • 确认scripts/wol.php文件路径正确,Apache用户(通常是www-data)有读取和执行权限。
  • 验证Python脚本文件名是否为wake.py8,如果是笔误(比如应为wake.py)需及时修正。
  • 检查Apache的.htaccess文件或rewrite规则,是否干扰了页面跳转路径。

内容的提问来源于stack exchange,提问作者Pixelworks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.01 13:09:51