LAMP环境下表单相对URL无法解析PHP,绝对URL正常?求原因
问题根源:访问协议的差异,而非浏览器或PHP配置
这问题既不是Firefox的锅,也不是PHP配置出问题,核心是你打开HTML文件的方式不一样,导致浏览器使用的协议完全不同:
- 当你在地址栏输入
http://localhost/index.html时,浏览器用的是HTTP协议,所有请求都会交给你的Apache服务器处理——包括表单提交的请求。Apache会识别.php后缀,自动交给PHP解析器处理后返回结果,所以不管是绝对URL还是相对URL都能正常工作。 - 但从Nautilus/Bluefish直接打开文件时,浏览器用的是
file://本地文件协议,这时候浏览器只是直接读取本地磁盘上的HTML文件,完全没经过Apache服务器:- 用绝对URL
http://localhost/grabar.php时,表单请求会跳转到HTTP协议,交给Apache处理,所以正常。 - 用相对URL
grabar.php时,浏览器会把请求解析成file://var/www/html/grabar.php——这时候Apache完全没参与,浏览器拿到的是未解析的PHP源码文件,自然会询问你怎么打开它。
- 用绝对URL
解决办法
1. 统一用HTTP协议访问网页
不管打开哪个页面,都通过地址栏输入http://localhost/[文件名]的方式访问,比如http://localhost/index.html,不要直接从文件管理器双击打开。这样所有请求都会经过Apache,PHP文件会被正常解析。
2. 配置文件管理器默认用HTTP打开HTML文件(可选)
如果你习惯从Nautilus打开文件,可以设置默认打开方式为通过HTTP访问:
- 右键点击HTML文件 → 选择「打开方式」→「其他应用」
- 点击「自定义命令」,输入:
(原理:firefox "http://localhost/$(basename %U)"%U会被替换成文件的绝对路径,$(basename %U)提取文件名,拼接成对应的localhost URL) - 勾选「设为默认值」,以后双击HTML文件就会自动用Firefox通过HTTP协议打开,表单提交就不会出问题了。
内容的提问来源于stack exchange,提问作者user3810288
相关产品推荐
相关产品推荐

