繁体   English   中英

如何使用带动态参数的 .htaccess 重定向 URL?

[英]How to redirect URL using .htaccess with dynamic parameter?

我想重定向

https://example.com/product-info/A100001

https://example.com/product-info/index/index/id/A100001

使用.htaccess 重定向规则

A100001 将是动态的

A100001
A100002
A100003
A100004
....

我正在尝试这个

RewriteEngine on
RewriteCond %{QUERY_STRING} product-info/A100001
RewriteRule ^$ /routing/index/index/id/? [L,R=301]

来源

还尝试了其他示例,但在我的场景中不起作用

任何精通 htacees 规则的人都可以在这方面帮助我。

 RewriteCond %{QUERY_STRING} product-info/A100001 RewriteRule ^$ /routing/index/index/id/? [L,R=301]

您的示例 URL 仅包含 URL 路径,不包含查询字符串 您发布的规则会将/?product-info/A100001/routing/index/index/id/

请尝试以下内容:

RewriteRule ^(product-info)/(A\d{6})$ /$1/index/index/id/$2 [R=302,L]

上面的代码会将/product-info/A123456形式的请求重定向到/product-info/index/index/id/A123456

$1反向引用仅包含product-info ,从RewriteRule模式(保存重复)中捕获, $2包含动态部分( A后跟 6 位数字)。

这是一个 302(临时)重定向。 始终首先使用 302 进行测试,以避免潜在的缓存问题。

.htaccess文件中指令的顺序很重要。 在任何现有重写之前,此规则可能需要在文件顶部附近添加 go。


更新:

重定向正在使用你的代码,你能告诉我参数模式吗,我需要从 A452218 到 A572217 的数字

Regex 不处理数字范围,只处理字符范围。 如果您特别只想匹配指定范围内的数字,那么您需要执行以下操作(更复杂):

RewriteRule ^(product-info)/A(45221[89]|4522[2-9]\d|452[3-9]\d{2}|45[3-9]\d{3}|4[6-9]\d{4}|5[0-6]\d{4}|57[01]\d{3}|572[01]\d{2}|57220\d|57221[0-7])$ /$1/index/index/id/A$2 [R=302,L]

注意: $2反向引用现在只包含动态数字,减去A前缀,它现在明确包含在替换字符串中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM