没有扩展名,PHP无法在文件中工作

时间:2013-10-02 16:59:15

标签: php

我有这个设置:

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');?>

它没有显示头文件。我能做些什么才能做到这一点?

4 个答案:

答案 0 :(得分:2)

您的问题是您的网络服务器无法将文件名“about”识别为php文档。你有三个选择

  1. 在页面文档上使用“.php”扩展名,例如“index.php”,它将运行您的php脚本。
  2. 安装一个解决方案,例如mod_rewrite,它会将诸如/ about之类的网址翻译成像“about.php”这样的文件。
  3. 为php文档调整服务器mime-type。在此处详细了解MIME类型。 https://developer.mozilla.org/en-US/docs/Properly_Configuring_Server_MIME_Types
  4. 第一个解决方案是最简单,最简单的,在任何使用PHP的文档中,扩展名应为.php

答案 1 :(得分:1)

关于mywebsite.com/about问题,它更像是Apache配置问题。你必须告诉Apache,index.php应该是一个索引文件。

答案 2 :(得分:1)

首先,您可以将Apache(或IIS)配置为使用任何Extensions来处理PHP代码。 如果需要,您可以将.ThisIsAPHPFile定义为有效的扩展名。

但是,Directorys始终会显示尾随/www.example.com/dir1/(浏览器并不总是显示尾随/),而文件的扩展名为www.example.com/dir1/index.html

那么,从我看到的情况来看,你想使用www.example.com/about但是要显示about-FILE?

因此,您可以使用Web服务器的重写引擎。在使用Apache时要么看一下mod-rewrite(http://httpd.apache.org/docs/current/en/mod/mod_rewrite.html),要么在使用IIS时看一下(一种可能性)ISAPI-Rewrite(http://www.isapirewrite.com/docs/)。

答案 3 :(得分:1)

如果在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]