2

我有这个设置:

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

4 回答 4

2

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

  1. 在您的页面文档上使用“.php”扩展名,例如“index.php”,它将运行您的 php 脚本。
  2. 安装诸如 mod_rewrite 之类的解决方案,它将诸如 /about 之类的 url 转换为诸如“about.php”之类的实际文件。
  3. 为 php 文档调整服务器的 mime 类型。在此处了解有关 MIME 类型的更多信息。https://developer.mozilla.org/en-US/docs/Properly_Configuring_Server_MIME_Types

第一种解决方案是最简单最简单的,在任何使用 PHP 的文档中,扩展名都应该是 .php

于 2013-10-02T17:12:41.400 回答
1

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

于 2013-10-02T17:08:07.933 回答
1

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

但是,目录总是以 : 结尾/www.example.com/dir1/浏览器并不总是显示结尾/),而文件具有扩展名 : www.example.com/dir1/index.html

那么,据我所知,您想使用www.example.com/about但显示 about-FILE 吗?

因此,您可以使用 Web 服务器的重写引擎。使用 Apache 或(一种可能性)ISAPI-Rewrite(http : //www .isapirewrite.com/docs/ ),使用 IIS 时。

于 2013-10-02T17:12:03.010 回答
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]
于 2013-10-02T17:20:30.893 回答