为什么WordPress图片链接路径中会出现index.php导致404错误?
问题原因
- 路径函数使用错误:你调用的
get_stylesheet_directory()返回的是主题文件夹的服务器物理路径,不是前端可访问的URL地址,输出后属于相对路径。当子页面URL带index.php/xxx前缀时,浏览器会自动把相对路径拼接在当前页面URL之后,就出现了你遇到的错误路径。首页因为URL是站点根路径,拼接后路径正常,所以首页功能不受影响。 - 固定链接配置问题:所有新建页面URL带
index.php是WordPress默认的朴素固定链接格式,属于未开启Apache伪静态的正常表现。
解决步骤
1. 修正背景图路径代码
将代码中的get_stylesheet_directory()替换为get_stylesheet_directory_uri(),该函数会返回主题文件夹的前端绝对访问URL,不会受当前页面URL结构影响。
修正后的完整代码如下:
function understanding_bg(){ ?> <style> body{ background-repeat:no-repeat; background-size:100% 100%; background-image: url(<?php echo get_theme_mod('backgrounds_setting', get_stylesheet_directory_uri() . '/backgrounds/bgg33.jpg');?>);} </style> <?php } add_action( 'wp_head', 'understanding_bg');
如果你的自定义器设置项存储的是物理路径,需要同步修改自定义器的存储逻辑,直接保存URL格式的路径,避免已保存的设置依旧报错。
2. 去除URL中的index.php(可选优化)
如果需要去掉URL里的index.php前缀,按以下操作配置即可:
- 打开XAMPP的Apache配置文件
httpd.conf,搜索mod_rewrite.so,删除该行开头的#注释开启重写模块,保存后重启Apache。 - 进入WordPress后台,点击【设置】-【固定链接】,选择除“朴素”之外的任意链接格式,保存设置。如果页面提示需要手动生成
.htaccess文件,按照页面给出的规则,把代码复制到WordPress根目录的.htaccess文件中即可。
内容的提问来源于stack exchange,提问作者John Rodi
相关产品推荐
相关产品推荐

