表单操作中的相对 url 不会解释 php,完整 url 会。为什么?

Relative url in form action doesn't interpret php, full url does. Why?

我已经安装了 LAMP 服务器(Ubuntu 20.4;PHP 7.4.3)。 如果我使用绝对 URL (http://localhost/try.php) 创建表单并设置操作,则没有问题,但如果我使用相对 url (try.php) 浏览器 (firefox) 告诉我是否要打开 php 文件。 是浏览器的问题还是php设置的问题?

对不起我的英语

示例:我在本地主机中有一个 'index.html' 文件(我使用 Firefox 从 Nautilus 打开它),在这个文件中有一个表单。 这很好用:

<form action="http://localhost/grabar.php" method="post">
    <input type="submit">
</form>

这是错误的(firefox 问我如何打开 grabar.php 文件):

<form action="grabar.php" method="post">
   <input type="submit">
    </form>

另一个发现:如果我通过在导航栏中输入以下内容从 firefox 打开文件,它们都可以正常工作:'localhost/index.html'。如果我从另一个程序(Nautilus、Bluefish)打开它,firefox 打开 'file: //var/www/html/index.html' 并出现上述问题。

谢谢

如果只是您的 <form action="/script.php" method="post"...> 的语法,那么是的,像我在这里做的那样使用绝对 URLS。

如果您尝试使用编辑器在本地打开文件,firefox 会尝试打开该文件,如果您要求的话,记事本可以尝试打开该文件。

重点是 Firefox 可以解析主机名并可以显示来自文件的 html 输出(解释为 php 可以从其主机名生成,或者不解释为静态或原始 html) (使用 http(s):// 协议)或来自他们的文件(使用 files:// 协议)。

Firefox 无法直接解释您的 php 文件,因此它会直接向您发送该文件并告诉您自己做进一步的工作。这不是他的范围。它无法做到这一点。 php 解释器在您的 apache 网络服务器内部工作,因此它可以做到这一点,这就是不同之处。