我不知道这是Apache还是PHP的东西,但如果你去了以下任何一个:
mysite.com/about
mysite.com/about/
它将显示mysite.com/about.php
文件而不是404错误,因为该目录不存在。
我确信这是一些设置,也许是一个htaccess的事情,任何想法?
答案 0 :(得分:3)
这肯定不是默认行为,所以很难说。如果在Apache端发生这种情况,请查找一系列重写匹配指令;它们可能以RewriteCond
开头,以RewriteRule
结尾。
如果您在VirtualHost
配置或网站.htaccess
中没有看到类似的内容,那么它将由您正在使用的任何PHP框架进行管理,而您需要在那里配置内容
答案 1 :(得分:3)
正如其他人所回答的那样,它可能是一个mod_rewrite规则;还有一个名为MultiViews
的指令,它明确用于启用您描述的功能。
http://httpd.apache.org/docs/2.2/content-negotiation.html#multiviews
MultiViews的效果如下 如下:如果服务器收到一个 请求/ some / dir / foo,if / some / dir启用了MultiViews,并且 / some / dir / foo不存在,那么 服务器读取要查找的目录 文件名为foo。*,并且有效 伪造一个名为all的类型地图 这些文件,分配相同 媒体类型和内容编码 如果客户要求的话会有 其中一个名字。然后它选择 与客户的最佳匹配 要求。
寻找
Options MultiViews
在httpd.conf或特定于虚拟主机的配置文件中。
答案 2 :(得分:0)
使用此.htaccess,您可以使用PHP端的$ _SERVER [REQUEST_URI]解析完整的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>
并在PHP方面,这应该是这个index.php
$URLarray = explode('/', $_SERVER['REQUEST_URI']);