12

.php使用 Apache 2.2 和 PHP 5,在没有扩展的情况下运行 PHP 的最佳方式是什么?例如,我有一个名为的脚本app.php,我喜欢将其调用为:

http://example.com/app

请注意,我仍然想保留.php文件的扩展名,但我没有mod_rewrite. 也不想使用index.php,因为它需要太多目录。

我确实找到了一种方法,将其添加到我的.htaccess,

AddHandler server-parsed .php
SetHandler application/x-httpd-php
AddHandler application/x-httpd-php .php

使用它,页面运行速度会慢一些。我怀疑它会在每个 PHP 页面上调用 SSI。想知道是否有更好的方法来实现这一点。

4

3 回答 3

25

另一种方法是使用内容协商。打开多视图

Options +MultiViews

如果指定的资源不存在,Apache 将 glob 文件,然后根据浏览器发送的媒体类型和内容编码要求进行排序。如果只有一个文件(您的 PHP 脚本),那么这就是 URL 解析的内容。

于 2010-03-01T19:12:31.150 回答
7

您还可以强制在您的特定文件的 mime 类型.htaccess

<Files app>
ForceType application/x-httpd-php
</Files>
于 2010-03-01T22:10:14.080 回答
-1

简短的回答是,您将无法按照您想要的方式执行此操作。PHP 将需要一些扩展名才能执行文件,因此您不妨将其保留为 *.php。

除非您使用 mod_rewrite,否则您将不得不使用完整的文件和扩展名来调用文件。

这就是 mod_rewrite 的美妙之处——它可以让你做这样的事情。

我会向你提出这个问题——你为什么不能使用 mod_rewrite?是环境问题,还是选择,你用的是Lighttpd(lighty)吗?

延期

如果服务器不支持 mod_rewrite,请将您的重写规则包装成这样,以防止它崩溃:

<IfModule mod_rewrite.c>
// DO REWREITE HERE
</IfModule>

如果您认为这是一个安全问题或同样有效的事情,那么您还可以进行以下检查并将它们发送到自定义 404 甚至您的文档,并为他们提供有关如何启用 mod_rewrite 并解释需求等的示例。第二个但是检查是可选的——如果你不使用它,用户只会看到 .php 扩展名,但你的页面应该仍然可以工作。

<IfModule !mod_rewrite.c>
    ErrorDocument 404 /application/errors/404.php
    // ERROR 404 ABOVE OR DO ANOTHER DIRECT REDIRECT TO AN INFORMATION PAGE
</IfModule>
于 2010-03-01T18:52:16.413 回答