gpt4 book ai didi

.htaccess - 301 基于 .htaccess 中的 GET 变量重定向 URL

转载 作者:行者123 更新时间:2023-12-01 11:10:07 27 4
gpt4 key购买 nike

我有一些乱七八糟的旧 URL,例如...

http://www.example.com/bunch.of/unneeded/crap?opendocument&part=1

http://www.example.com/bunch.of/unneeded/crap?opendocument&part=2

...我想重定向到更新、更清晰的形式...

http://www.example.com/page.php/welcome

http://www.example.com/page.php/prices

我知道我可以通过简单的重定向将一个页面重定向到另一个页面,即

重定向 301/bunch.of/unneeded/crap http://www.example.com/page.php

但是源页面没有改变,只是它是 GET 变量。我不知道如何根据这些 GET 变量的值进行重定向。有人可以帮忙吗!?我对旧的正则表达式相当得心应手,所以如果必须的话,我可以使用 mod-rewrite,但我不清楚重写 GET vars 的语法,我宁愿避免性能下降并使用更清洁的重定向指令。有办法吗?如果没有,有人能告诉我正确的 mod-rewrite 语法吗?

干杯,

收到。

最佳答案

由于 URL 查询中的参数可能有任意顺序,您需要使用其中一个 RewriteCond directive对于每个要检查的参数或每个可能的排列。

这是一个示例,每个参数都有一个 RewriteCond 指令:

RewriteCond %{QUERY_STRING} ^([^&]&)*opendocument(&|$)
RewriteCond %{QUERY_STRING} ^([^&]&)*part=1(&|$)
RewriteRule ^bunch\.of/unneeded/crap$ /page.php/welcome? [L,R=301]

RewriteCond %{QUERY_STRING} ^([^&]&)*opendocument(&|$)
RewriteCond %{QUERY_STRING} ^([^&]&)*part=2(&|$)
RewriteRule ^bunch\.of/unneeded/crap$ /page.php/prices? [L,R=301]

但是如您所见,这可能会变得一团糟。

所以更好的方法可能是使用 RewriteMap .最简单的是带有 keyvalue 对的纯文本文件:

1 welcome
2 prices

要定义您的 map ,请在您的服务器或虚拟主机配置中写入以下指令(在每个目录上下文中不允许使用此指令):

RewriteMap examplemap txt:/path/to/file/map.txt

那么你只需要一个规则:

RewriteCond %{QUERY_STRING} ^([^&]&)*opendocument(&|$)
RewriteCond %{QUERY_STRING} ^([^&]&)*part=([0-9]+)(&|$)
RewriteRule ^bunch\.of/unneeded/crap$ /page.php/%{examplemap:%2}? [L,R=301]

关于.htaccess - 301 基于 .htaccess 中的 GET 变量重定向 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/871511/

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