如何编写Rewrite rule移除Wordpress全数字URL slug末尾的-2
WordPress纯数字slug去-2重写规则配置
Apache服务器(.htaccess配置)
规则需要放在WordPress自动生成的# BEGIN WordPress代码块之前,避免后续WordPress更新规则时被覆盖:
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase /woensdag-callerid/wordpress/ # 匹配末尾带-2的纯数字路径 RewriteRule ^([0-9]+)-2$ $1 [L,R=301] </IfModule>
规则说明:
^([0-9]+)-2$正则匹配仅由数字组成、末尾带-2的路径段,捕获纯数字部分作为参数$1将请求重写到捕获到的纯数字地址[L,R=301]标识当前为最后一条匹配规则,使用301永久重定向,符合SEO规范
Nginx服务器配置
规则需要写入对应站点的server配置块中,修改完成后执行nginx -s reload重载配置生效:
location ~ ^/woensdag-callerid/wordpress/([0-9]+)-2$ { return 301 /woensdag-callerid/wordpress/$1; }
补充:解决重定向后404问题
如果重定向后访问纯数字slug返回404,可在当前主题的functions.php文件中添加如下代码,让WordPress直接解析纯数字路径为对应ID的文章:
add_action('parse_request', function($wp) { if (preg_match('/^([0-9]+)$/', $wp->request, $matches)) { $wp->query_vars['p'] = $matches[1]; $wp->query_vars['post_type'] = 'post'; // 若为自定义文章类型可修改此处值 } });
内容的提问来源于stack exchange,提问作者user17418530
相关产品推荐
相关产品推荐

