gpt4 book ai didi

.htaccess - 使用 htaccess 查询字符串重定向

转载 作者:行者123 更新时间:2023-12-01 13:00:00 25 4
gpt4 key购买 nike

在我正在处理的网站上,我需要设置一个将查询字符串考虑在内的重定向。

例子:

http://www.domain.com/?id=86&name=John&ref=12d34 -> http://www.domain.com/?ref=12d34
http://www.domain.com/?ref=593x56&id=935 -> http://www.domain.com/?ref=593x56
http://www.domain.com/?ref=3v77l32 -> http://www.domain.com/?ref=3v77l32

所以基本上我需要找到 ref 参数和它的值(无论它的长度是多少),然后只将该部分附加到新的 URL。问题是 ref 参数可以出现在 URL 中的任何位置。

非常感谢任何帮助或指导!

最佳答案

RewriteRule 不能直接与查询字符串一起使用——您必须为此使用 RewriteCond

这是规则——它将重定向(301 永久重定向)任何在查询字符串中有超过 1 个参数且其中 1 个是 ref

的 URL
RewriteEngine On

RewriteCond %{QUERY_STRING} (^|&)ref=([^&]*)(&|$)
RewriteCond %{QUERY_STRING} !^ref=([^&]*)$
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI}?ref=%2 [R=301,L]

例如:

  1. 它会将 http://www.example.com/hello.php?id=86&name=John&ref=12d34888&me=yes 重定向到相同的 URL 但带有 ref 仅参数:http://www.example.com/hello.php?ref=12d34888

  2. 如果只有 ref 参数存在或根本没有参数,它将什么都不做,例如http://www.example.com/hello.php?ref=12d34888http://www.example.com/hello.php


如果这种重定向只适用于网站根目录命中,则将 RewriteRule 行更改为:

RewriteRule ^$ http://%{HTTP_HOST}/?ref=%2 [R=301,L]

(这是如果放置在网站根文件夹中的 .htaccess 文件中——如果放置在服务器配置/虚拟主机上下文中,则需要稍微调整规则)。

http://www.example.com/?id=86&name=John&ref=12d34888&me=yes -> http://www.example.com/?ref=12d34888


如果必须重定向到另一个域,则将 %{HTTP_HOST} 替换为域特定名称,例如:

RewriteRule ^$ http://www.exampe.com/?ref=%2 [R=301,L]

在发布之前都已经过测试。

关于.htaccess - 使用 htaccess 查询字符串重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7000110/

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