You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

带参数旧URL转新URL的301重定向实现求助

301重定向实现方案

根据你的需求,以下是不同服务器/环境下的可行实现代码:

Apache服务器(.htaccess)

在网站根目录的.htaccess文件中添加以下规则(确保mod_rewrite已启用):

RewriteEngine On
RewriteRule ^members/([^/]+)/directory/([^/]+)/?$ /members/$1/listings/?directory_type=$2 [R=301,L]
  • ([^/]+) 捕获URL中的username和category参数
  • [R=301] 指定永久重定向,[L] 表示执行完此规则后停止后续匹配

Nginx服务器

在站点的Nginx配置文件的server块内添加:

rewrite ^/members/([^/]+)/directory/([^/]+)/?$ /members/$1/listings/?directory_type=$2 permanent;
  • permanent 对应301永久重定向,规则会自动匹配带或不带结尾斜杠的URL

WordPress环境(主题functions.php)

如果是WordPress站点,可通过主题的functions.php文件实现(避免.htaccess规则被覆盖):

add_action('template_redirect', function() {
    if (preg_match('#^/members/([^/]+)/directory/([^/]+)/?$#', $_SERVER['REQUEST_URI'], $matches)) {
        $target_url = home_url(sprintf('/members/%s/listings/?directory_type=%s', $matches[1], $matches[2]));
        wp_redirect($target_url, 301);
        exit;
    }
});
  • 利用template_redirect钩子在页面加载前拦截请求
  • 匹配成功后构建目标URL,发送301重定向并终止后续执行

测试注意事项

  1. 修改配置后清空浏览器缓存,避免旧缓存影响测试结果
  2. 通过浏览器开发者工具的「网络」面板,确认请求返回状态码为301
  3. Apache环境需确保服务器已启用mod_rewrite模块

内容的提问来源于stack exchange,提问作者NeurodiverCity CIC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 13:21:03