You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP控制器搭建求助:无.php后缀URL访问报错

问题解决方法

1. 配置URL重写(核心原因)

服务器默认仅识别带.php后缀的文件,直接访问/about这类无后缀路径会提示找不到资源。需要配置重写规则,让服务器将干净路径映射到对应的PHP文件:

针对Apache服务器

在网站根目录创建.htaccess文件,添加以下规则:

RewriteEngine On
# 跳过实际存在的文件和目录,避免静态资源被误重写
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# 将无后缀请求转换为对应.php文件的请求
RewriteRule ^(.*)$ $1.php [L]

针对Nginx服务器

在站点配置的location /块中添加:

location / {
    try_files $uri $uri/ $uri.php?$args;
}

修改完成后重启Nginx服务生效。

2. 修正导航代码的逻辑问题

当前导航代码中,href使用干净路径(如/about),但urlIs判断的是带.php的路径(如/about.php),既会导致高亮状态异常,逻辑也不统一。需修正为:

<li><a href="/" class="<?php echo urlIs('/') ? 'bg-black text-black' : 'text-gray'; ?> nav-link"> Home</a></li>

<li class="nav-item"><a href="/about" class="<?php echo urlIs('/about') ? 'bg-black text-black' : 'text-gray'; ?> nav-link">About Us</a></li>

<li class="nav-item"><a href="/courses" class="<?php echo urlIs('/courses') ? 'bg-black text-black' : 'text-gray'; ?> nav-link">Courses</a></li>

注意:原代码中<?php urlIs('/about.php') ?>缺少echo,无法输出类名,必须补上;同时移除固定的active类,由urlIs动态判断添加高亮样式。

3. 确认urlIs函数的正确性

确保urlIs函数基于当前请求的URI做判断,示例实现如下:

function urlIs($path) {
    return $_SERVER['REQUEST_URI'] === $path;
}

配置重写后,$_SERVER['REQUEST_URI']会返回/about而非/about.php,此时判断逻辑即可正常工作。

内容的提问来源于stack exchange,提问作者Krystian728

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 01:33:18