PHP file_get_contents 个 HTML 个文件请求旧资源
PHP file_get_contents of HTML file requests old resources
我有一个特定的网页。这是文件结构:
index.php
script.js
style.css
edit
|
|--- index.php
|
|--- script.js
edit/index.php
使用包含 <script src='script.js'></script>
的 file_get_contents('../index.php')
回显 index.php
的内容。 edit/script.js
包含 alert()
。当我打开https://www.example.com/edit
时,显示index.php
的内容,但不执行edit/script.js
里面的代码。为什么会发生这种情况,我该如何解决? (虽然 index.php
有扩展名 .php
但它不包含任何 PHP,只是 HTML)
问题是浏览器不知道 edit
实际上是 edit/index.php
。它认为这是根目录中的文件,因此在解析 script.js
时它也在根目录中查找该文件。
您应该配置网络服务器,使其执行从 edit
到 edit/index.php
的重定向,而不是仅仅返回 edit/index.php
的内容。这样,所有相对 URL 都会被正确处理。如果您不想显示脚本名称,您可以重定向到 edit/
——这足以让它知道这是一个目录而不是一个文件。
我有一个特定的网页。这是文件结构:
index.php
script.js
style.css
edit
|
|--- index.php
|
|--- script.js
edit/index.php
使用包含 <script src='script.js'></script>
的 file_get_contents('../index.php')
回显 index.php
的内容。 edit/script.js
包含 alert()
。当我打开https://www.example.com/edit
时,显示index.php
的内容,但不执行edit/script.js
里面的代码。为什么会发生这种情况,我该如何解决? (虽然 index.php
有扩展名 .php
但它不包含任何 PHP,只是 HTML)
问题是浏览器不知道 edit
实际上是 edit/index.php
。它认为这是根目录中的文件,因此在解析 script.js
时它也在根目录中查找该文件。
您应该配置网络服务器,使其执行从 edit
到 edit/index.php
的重定向,而不是仅仅返回 edit/index.php
的内容。这样,所有相对 URL 都会被正确处理。如果您不想显示脚本名称,您可以重定向到 edit/
——这足以让它知道这是一个目录而不是一个文件。