PHP动态页面包含机制失效,点击导航出现404错误求助
问题原因与解决方案
问题根源
你的PHP逻辑依赖$_GET["site"]参数决定加载的页面,但当前导航链接直接指向/hirek,服务器找不到对应的物理文件,因此返回404;改成/只会加载默认首页,因为没有传递site参数触发对应页面的加载逻辑。
方案1:直接修改导航链接(无需服务器配置)
把导航链接的href改为带参数的形式,让请求指向index.php并传递site值:
<li><a href="index.php?site=hirek">Hírek</a></li> <li><a href="index.php?site=az-alapitvanyrol">Az alapítványról</a></li>
点击链接后,浏览器会请求index.php?site=hirek,PHP代码能正确获取$oldal变量,加载对应的hirek.php页面。
方案2:配置URL重写(保持简洁URL)
如果想保留/hirek这类美观URL,需要配置服务器的URL重写规则,将请求自动转发到index.php并传递site参数:
Apache服务器配置:
- 确保服务器已启用
mod_rewrite模块(通常在Apache的httpd.conf中开启)。 - 在网站根目录创建
.htaccess文件,添加以下规则:
RewriteEngine On # 排除真实存在的文件和目录,避免重写静态资源 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # 将非文件/目录的请求转发到index.php,传递路径作为site参数 RewriteRule ^(.*)$ index.php?site=$1 [L]
Nginx服务器配置:
在站点的Nginx配置文件server块中添加:
location / { try_files $uri $uri/ /index.php?site=$uri; }
配置完成后,访问/hirek时,服务器会自动将请求转换为index.php?site=hirek,PHP逻辑可正常处理,同时保持URL简洁。
额外检查点
确认hirek.php、az-alapitvanyrol.php等文件确实存在于网站根目录,避免include时出现文件不存在的错误。
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

