我有这样的设置:
images
image1.jpg
image2.jpg
header.html
about
index.php
image3.jpg
但是去 MyWebsite.com/About 最后给了它一个额外的斜杠。我决定采用在我的主目录中创建一个名为about的文件的解决方案:
images
image1.jpg
image2.jpg
header.html
about
aboutfiles
image3.jpg
问题是现在这个文件不允许我使用.php:
<?php include('header.html');?>
它不显示头文件。我能做些什么来完成这项工作?
您的问题是您的 Web 服务器无法将文件名"about"识别为 php 文档。您有三个选择
- 在页面文档上使用".php"扩展名,例如"index.php",它将运行您的 php 脚本。
- 安装一个解决方案(如 mod_rewrite),将 url(如/about)转换为实际文件(如"about.php)。
- 调整 php 文档的服务器 mime 类型。在此处了解有关 MIME 类型的更多信息。https://developer.mozilla.org/en-US/docs/Properly_Configuring_Server_MIME_Types
第一个解决方案是最简单和最简单的,在您使用PHP的任何文档中,扩展名都应该.php
关于mywebsite.com/about
问题,它更像是一个Apache配置问题。你必须告诉 Apache index.php 应该是一个索引文件。
首先,你可以配置你的Apache(或IIS)来使用任何扩展来处理PHP代码。如果需要,可以将.ThisIsAPHPFile
定义为有效的扩展。
但是,目录总是以尾随/
:www.example.com/dir1/
(浏览器并不总是显示尾随/
)反映,而文件具有扩展名:www.example.com/dir1/index.html
。
所以,从我所看到的,你想使用www.example.com/about
但显示关于文件?
因此,您可以使用 Web 服务器的重写引擎。要么在使用Apache时查看mod-rewrite(http://httpd.apache.org/docs/current/en/mod/mod_rewrite.html),要么在使用IIS时(一种可能性)ISAPI-Rewrite(http://www.isapirewrite.com/docs/)。
如果您在 apache conf 文件中编辑 virtualhost 指令,则可以添加以下内容:
DefaultType application/x-httpd-php
这将告诉 apache 发送不以扩展结尾的 Web 路径以使用 php 引擎进行渲染。
因此,/about 的行为就好像它是 about.php。 另一种可能更有用的方法是在服务器上命名文件about.php,并允许在URL中不使用.php引用它。 为此,您将以相反的方式对其进行配置。
RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(([^/]+/)*[^.]+)$ /$1.php [L]