.htaccess - 如何使用 utm 参数重定向链接?
问题描述
我有链接mydomain.com/?utm_source=xxx&lang=de
,我想将其重定向到
mydomain.com/de/?utm_source=xxx
. 我想对所有语言进行相同的重定向,除了en
重定向到mydomain.com/?utm_source=xxx
.
我试过这个:
RewriteCond %{QUERY_STRING} lang=(de|ar)
# exclude all requests starting with /wp-admin/
RewriteCond %{REQUEST_URI} !^/wp-admin/
RewriteRule (.*) /%1/$1? [L,R=302]
上面的代码重定向但不包括 utm_source 参数。有什么建议吗?提前致谢。
解决方案
你可以有这样的规则:
# exclude all requests starting with /wp-admin/
# lang=en
RewriteCond %{THE_REQUEST} \?(.*&)?lang=en&?(\S*)\sHTTP [NC]
RewriteRule !^wp-admin/ %{REQUEST_URI}?%1%2 [R=302,NE,L,NC]
# lang other than en
RewriteCond %{THE_REQUEST} \?(.*&)?lang=([a-z]{2})&?(\S*)\sHTTP [NC]
RewriteRule !^wp-admin/ /%1%{REQUEST_URI}?%1%3 [R=302,NE,L,NC]
确认它工作正常后,替换R=302
为R=301
. 测试规则时避免使用R=301
(永久重定向) 。mod_rewrite
推荐阅读
- grails - 允许 Grails 4 应用程序在 Jetty (9+) 下运行的最少步骤?
- django - 我在注册表单中的 /accounts/register/ 处有一个 ValueError
- azure - Kubernetes - 如何从“内部负载均衡器”切换到“入口控制器”
- python - Scipy savemat / loadmat - 如何保存一维数组与长度为 1 维的二维数组
- java - 更改 CollectionModel 创建的 json 响应中的单词“内容”
- python - 在 DynamoDB 中使用查询 IndexName、GSI 而在 python 中不可用 begin_with
- java - 如何从主类外部的方法创建对象并从构造函数打印结果?
- c# - VS 2017 在使用全球化时总是使用默认语言
- c# - 从 ASP.NET Core MVC 中的 SQL 数据库访问用户 ICollection
- javascript - module.exports 更新值