WordPress htaccess配置/konfigurator路径重写返回404问题求解
问题原因
你遇到的404报错由两个核心问题导致:
- 原有
.htaccess的重写规则匹配逻辑不完整,无法覆盖所有/konfigurator/下的子路径请求 - WordPress默认会解析全路径匹配站点内容,找不到对应内容就会返回404,需要额外规则绑定路径到指定页面
解决步骤
1. 修正.htaccess规则
将你配置中# App部分的规则替换为以下内容:
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / # App RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^konfigurator/(.*)$ /konfigurator/ [L,QSA] #Wordpress RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule>
修改说明:
^konfigurator/(.*)$可以匹配/konfigurator/路径下所有层级的子请求,同时捕获后续所有slug内容- 新增
QSA标志,保留原请求附带的查询参数 - 保持
L标志,命中规则后不再执行后续重写逻辑
2. 添加WordPress自定义重写规则
需要在站点当前主题的functions.php文件中添加如下代码,告诉WordPress所有/konfigurator/下的请求都交给目标页面处理:
// 注册konfigurator路径重写规则 add_action('init', function () { add_rewrite_rule( '^konfigurator/(.+)?/?$', 'index.php?pagename=konfigurator', 'top' ); }); // 注册自定义参数用于传递slug add_filter('query_vars', function ($vars) { $vars[] = 'konfigurator_slug'; return $vars; }); // 可选:向前端JS注入slug参数,直接供嵌入式应用调用 add_action('wp_enqueue_scripts', function () { if (is_page('konfigurator')) { global $wp; $current_slug = trim(str_replace('konfigurator', '', $wp->request), '/'); // 把下面的'your-app-js-handle'替换为你嵌入式应用加载的JS文件的注册句柄 wp_localize_script('your-app-js-handle', 'KonfiguratorData', [ 'current_slug' => $current_slug ]); } });
代码添加完成后,进入WordPress后台「设置」-「固定链接」页面,无需修改任何内容直接点击「保存更改」,刷新重写规则缓存后即可生效。
内容的提问来源于stack exchange,提问作者lemitri
相关产品推荐
相关产品推荐

