【问题标题】:Running PHP without extension without using mod_rewrite?在不使用 mod_rewrite 的情况下运行没有扩展的 PHP?
【发布时间】:2011-01-22 10:11:56
【问题描述】:

使用 Apache 2.2 和 PHP 5,在没有 .php 扩展名的情况下运行 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。想知道是否有更好的方法来实现这一点。

【问题讨论】:

  • 我已经看到使用 <file> 指令完成了这项工作,但我认为与 mod_rewrite 相比,您不太可能在共享环境中运行它。
  • 就我个人而言,我只想给出足够多的关于“降低性能”和“我给她所有的一切,船长!”的暗示。直到他们安装了 mod_rewrite。

标签: php mod-rewrite apache server-side-includes


【解决方案1】:

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

<Files app>
ForceType application/x-httpd-php
</Files>

【讨论】:

    【解决方案2】:

    另一种方法是使用content negotiation。开启multiviews

    Options +MultiViews
    

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

    【讨论】:

    • 原来 mod_negotiation 安装在所有服务器上。所以这是迄今为止我找到的最好的解决方案。这样做也没有明显的性能差异。谢谢!
    • 这个还是有关系的,你可能需要在“/etc/apache2/mods-enabled/mime.配置:“
    • @mckenzm:.html 和 .htm 文件不应被解释为 PHP。 AddType 只能用于设置资源的 MIME 类型,而不是处理程序。为此,有AddHandler(甚至在 PHP 通过 CGI 运行时也可以使用)。
    【解决方案3】:

    简短的回答是,您将无法按照您想要的方式执行此操作。 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>
    

    【讨论】:

    • 由于某种原因,mod_rewrite 未安装在该站点将运行的某些服务器上。我已经让它在没有扩展的情况下工作。只是想知道是否有任何更快的方法不诉诸 SSI。
    • @ZZ Coder - 有人可能对你有一些魔力,但我对此表示怀疑——我以前曾尝试过这种方法,但从未找到有效的解决方案。让人们知道如果他们的服务器不支持 mod_rewrite 那么他们将看到 PHP 扩展是否可行?如果未启用 mod_rewrite,请参阅我的编辑以防止 .htaccess 爆炸。这就是 wordpress 之类的东西的工作方式,而且对他们来说效果很好。
    猜你喜欢
    • 2017-07-31
    • 1970-01-01
    • 2014-12-07
    • 2023-01-15
    • 2020-11-08
    • 2021-08-17
    • 2011-08-01
    • 1970-01-01
    • 2018-06-01
    相关资源
    最近更新 更多