Wake-on-LAN脚本能正常工作,但执行后浏览器跳转到404页面
我在Apache上搭建了一个HTML页面,其中包含一个从PHP调用的Python脚本,用来对我的域内设备执行Wake-on-LAN(网络唤醒)。
脚本工作正常,设备按设计启动,但在点击Wake-on-LAN按钮后,HTML页面会跳转到404错误页。有没有办法避免?
html片段:
<tr>
<td><button><a href="scripts/wol.php"><img src="images/action_start.jpg" alt="Computer 2" style="width:50px;"></a></button>
</tr>
PHP代码:
<?php
system ("python /var/www/html/scripts/python/wake.py8 [Variable1] [Variable2]");
header ("Location:index.html");
?>
Python:
#!/usr/bin/python3
import socket
import sys
import codecs
if len(sys.argv) < 3:
print ("Usage: wake.py <BROADCAST Address> <MAC Address>")
sys.exit(1)
mac = sys.argv[2]
data = ''.join(['FF' * 6, mac.replace(':', '') * 16])
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
decode_hex = codecs.getdecoder("hex_codec")
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
sock.sendto(decode_hex(data)[0], (sys.argv[1], 9))
解决方案
问题不是Wake-On-LAN,而是相对URL的问题。
我假设你在主文件夹中有 index.html。
当你在 <a href="scripts/wol.php"> 中点击相对URL时,它会跳转到子文件夹 scripts,随后 "Location:index.html" 中的相对URL正在寻找 scripts/index.html,而不是主文件夹中的 index.html。
你可能需要在相对路径中使用 ../ 来返回到上一级目录
header("Location:../index.html")
或者你应该使用以 / 开头的绝对路径
header("Location:/index.html")
顺便说一句:如果你创建了 scripts/index.html(例如带有消息 I'm in subfolder "scripts"),在当前的 "Location:index.html" 下你应该看到这条消息。
通常在所有URL(包括指向脚本、图片、其他页面的链接)中使用绝对路径会更好。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。