我不知道这是一个Apache或PHP的事情,但如果你去到任何一个:如何停止解析为文件时不存在的URL?
mysite.com/about
mysite.com/about/
它会显示mysite.com/about.php
文件,而不是一个404错误,因为该目录不存在。
我相信这是一些设置,也许是一个htaccess的东西,任何想法?
我不知道这是一个Apache或PHP的事情,但如果你去到任何一个:如何停止解析为文件时不存在的URL?
mysite.com/about
mysite.com/about/
它会显示mysite.com/about.php
文件,而不是一个404错误,因为该目录不存在。
我相信这是一些设置,也许是一个htaccess的东西,任何想法?
正如其他人已经回答,它可能是一个mod_rewrite规则;还有一个叫做MultiViews
的指令明确地用于启用你描述的功能。
http://httpd.apache.org/docs/2.2/content-negotiation.html#multiviews
多视图的作用是作为 如下:如果服务器接收用于/一些/目录/ foo的一个 请求时,如果 /一些/目录,使多视图,和 /一些/ DIR /富不存在,那么 服务器读取寻找名为foo 文件的目录。*,有效 假货一个类型的地图,名称的所有 这些文件,赋予它们同样 媒体类型和内容编码它如果客户要求其中一个名称为 ,则会有个客户。然后它选择 与客户的 要求的最佳匹配。
查找
Options MultiViews
在httpd.conf或特定的虚拟主机,配置文件
。
这不是默认行为,所以很难说。如果这发生在Apache端,请查找一系列重写匹配指令;他们可能会以RewriteCond
开头并以RewriteRule
结尾。
如果您在VirtualHost
配置文件或.htaccess
配置文件中没有看到类似的内容,那么它将由您正在使用的任何PHP框架进行管理,而您需要在其中配置相应内容。
+1这绝对不是一个默认的PHP/Apache的安装。我怀疑一个'mod_rewrite'指令或一个模块,可以建议替代文件名称为不完整的请求,我忘了它的名字... – 2010-02-02 14:06:47
这个的.htaccess可以解析,用$ _ SERVER [REQUEST_URI]在PHP端,完整的URL,然后执行所需的操作,这是一个普遍的方式,你应该考虑误差控制和404重定向:
ErrorDocument 404 /404.php
<IfModule mod_rewrite.c>
RewriteEngine On
# RewriteBase
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>
和int PHP的一面,这应该是本的index.php
$URLarray = explode('/', $_SERVER['REQUEST_URI']);
与问题无关 – meagar 2010-02-02 14:26:51
非常感谢这正是我一直在寻找! – fire 2010-02-02 14:26:23
很高兴帮助。 MultiViews对于一些人来说非常棒(防止大量使用.htaccess文件和mod_rewrite规则)以及其他人的祸害。 – meagar 2010-02-02 14:28:51