WordPress如何重写不存在URL无跳转展示指定动态页面内容
WordPress /member/前缀不存在路径内部重定向实现方案
下面提供两种可直接使用的实现方式:
方案1:修改.htaccess文件(仅适用于Apache服务器)
此方案优先级更高,性能优于代码钩子实现,编辑网站根目录下的.htaccess文件,将以下规则放在WordPress默认生成的重写规则之前:
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / # 匹配所有/member/开头的请求,内部转发到sample-page页面 RewriteRule ^member/.*$ /index.php?pagename=sample-page [L] </IfModule>
规则说明:
- 未添加
R标识,属于服务器内部重定向,不会触发3xx跳转,用户浏览器地址栏会保留原始/member/xxx/路径 - 所有
/member/前缀的请求无论是否存在,都会直接返回sample-page的内容,符合需求
方案2:修改主题functions.php文件(全环境兼容)
此方案不依赖服务器配置,Apache、Nginx环境均可用,编辑当前使用主题根目录下的functions.php文件,添加以下代码:
add_action( 'template_redirect', 'custom_member_path_map' ); function custom_member_path_map() { // 判断当前请求路径前缀为/member/ 且 页面为404状态 if ( strpos( $_SERVER['REQUEST_URI'], '/member/' ) === 0 && is_404() ) { global $wp_query; // 清除404状态标记 $wp_query->is_404 = false; $wp_query->is_page = true; $wp_query->set( 'pagename', 'sample-page' ); // 设置返回状态码为200 status_header( 200 ); // 加载sample-page的文章数据,继承该页面的模板、自定义字段等配置 $wp_query->the_post(); } }
代码说明:
- 仅对
/member/前缀的404请求生效,不会影响其他正常存在的页面 - 完全基于WordPress原生钩子实现,不会修改服务器配置,兼容性更强
- 配置后如果页面显示异常,清空WordPress缓存即可
内容的提问来源于stack exchange,提问作者John Choo
相关产品推荐
相关产品推荐

