gpt4 book ai didi

Apache mod_rewrite/mod_redirect : convert URL with query parameters into an SEO-friendly URL. 一些查询参数被忽略

转载 作者:行者123 更新时间:2023-12-05 04:43:07 27 4
gpt4 key购买 nike

如上。

最好用一个例子来解释:

我已经查看/搜索了网络,但没有什么能接近我正在尝试做的事情。谢谢。

最佳答案

您可以使用 mod_rewrite 像下面这样进行操作:

RewriteEngine On

RewriteCond %{QUERY_STRING} (?:^|&)p1=([^&]+)
RewriteCond %1@%{QUERY_STRING} ^([^@]+)@(?:|.*&)p2=([^&]*)
RewriteRule ^/?(my-page)$ /$1/%1/%2 [QSD,R=302,L]

第一个条件 捕获p1 的值并将其传递给第二个条件,后者也捕获p2< 的值。然后,它们在替换 字符串中分别用作%1%2 反向引用。

URL 参数可以按任何顺序出现。

@(在第二种情况下)只是v1中不出现的任意字符,因此用作v1之间的分隔符> 和搜索 p2 时的查询字符串。

所有其他 URL 参数(即 p3..pN)将被忽略(并丢弃)。

参数 p1 必须以非空值存在(否则生成的重定向将不明确)。 p2 也必须存在,但值可以为。例如。 /my-page?p2=&p1=v1 仍会成功重定向到 /my-page/v1/

QSD 标志从请求中丢弃原始查询字符串。

根据这些指令的使用位置(例如 目录服务器 上下文)以及 URL 最终如何被路由,您可能需要添加一个 初始条件以确保只处理直接请求(而不是重写请求)。

例如,如果需要,添加以下作为第一个条件:

RewriteCond %{ENV:REDIRECT_STATUS} ^$
:

更新:

p1 and p2 are mandatory. p3 is optional.

您可以按如下方式更改上述内容:

RewriteCond %{QUERY_STRING} (?:^|&)p1=([^&]+)
RewriteCond %1@%{QUERY_STRING} ^([^@]+)@(?:|.*&)p2=([^&]+)
# Either p3 is mandatory and must have a value
RewriteCond %1/%2/@%{QUERY_STRING} ^([^@]+)@(?:|.*&)p3=([^&]+) [OR]
# OR p3 is omitted or does not have a value
RewriteCond %1/%2 (.+)
RewriteRule ^/?(my-page)$ /$1/%1%2 [QSD,R,L]

第二个条件现在确保 p2 参数(即 v2)有一个值 - 它不能为空。

然后第三个条件检查一个非空的p3参数或者p3参数为为空或完全省略。

p3 不存在时,生成的重定向将省略尾部斜线。例如,生成的重定向是 /mypage/v1/v2/mypage/v1/v2/v3。 (避免了可能出现在 /mypage/v1/v2/ 上的尾部斜杠。)

在最终的替换 字符串中,%1%2 反向引用的值与之前略有不同。这些不再包含每个值(即 v1v2)。相反,%1 包含 v1/v2%2 包含 /v3(包括斜杠前缀)或者是(当p3 为空或省略时)。

关于Apache mod_rewrite/mod_redirect : convert URL with query parameters into an SEO-friendly URL. 一些查询参数被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69716591/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com