.htaccess 重写查询参数而不硬编码所有参数名称

enxuqcxy  于 2022-11-25  发布在  其他
关注(0)|答案(1)|浏览(159)

我有这样的一些URL:
https://whatever.com/admin/members?keyword=Test&anotherparam=paramvalue
我希望有这样的URL:
https://whatever.com/admin/members/keyword/test/anotherparam/paramvalue
我可以通过用我将在整个项目中使用的每个参数名称组合对每个rewriterule进行硬编码来实现这个目标。但在我看来,这是一种糟糕的风格,而且非常繁琐。我是一个程序员。我很懒。我想要更动态地拥有它。
我如何重写URL动态获取传递的查询参数?谢谢!

zvokhttg

zvokhttg1#

也许你可以试试这样的方法:

function changeUrl(string $url): string {
  $urlDetails = parse_url($url);

  if (!isset($urlDetails['query'])) {
      return $url;
  }

  parse_str($urlDetails['query'], $result);

  $newQueryString = '/';
  foreach ($result as $parameterName => $parameterValue) {
      $newQueryString .= $parameterName . '/' . $parameterValue . '/';
  }

  return str_replace( '?' . $urlDetails['query'], $newQueryString, $url);
}

这是一个例子,如果我很好地理解你想要什么。也许你可以在$result变量上也添加一个验证,使它更安全。

相关问题