如何在不使用.htaccess的情况下隐藏PHP文件扩展名


How to hide PHP file extension without using .htaccess

如何在URL地址中隐藏.php扩展名,以便该地址:

http://www.thesite.com/somefile.php

看起来像:

http://www.thesite.com/somefile

而不使用.htaccess文件。原因是我有很多目录,并且想隐藏每个目录中所有这些文件的扩展名。我已经尝试将expose_php设置为关闭,但仍然失败,并出现错误404。

我使用的是PHP 5.3.10和Apache服务器。

尽管您明确表示不,但使用.htaccess文件会从站点中所有子目录中的所有PHP文件中删除.php扩展名。我想这就是你要做的。

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME}'.php -f
  RewriteRule ^(.*)$ $1.php
</IfModule>

将其放入.htaccess文件将删除所有.php文件扩展名或者您可以直接将其放入Web服务器的配置文件中。

您可以通过URL重写来实现这一点。如果您不想使用.htaccess,可以在主机配置文件中写入规则。

当存在简单得多的多视图时,URL重写是一种相当繁重的方法

在httpd配置的<Directory><Location><Files>部分中(如果AllowOverride允许,则在.htaccess中)。。。

Options MultiViews

从文档中。。。

MultiViews的效果如下:如果服务器接收到对/some/dir/foo的请求,如果/some/dir启用了MultiViews,而/some/dir/foo不存在,则服务器读取查找名为foo.*的文件的目录,并有效地伪造一个命名所有这些文件的类型映射,为它们分配相同的媒体类型和内容编码,如果客户端通过名称要求其中一个

请注意,冲突的文件和目录可能会导致问题,因此尽量不要将foo.phpfoo.htmlfoo/都放在同一目录中。