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

gwo2fgha  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(156)

我要重新导向

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]

Source
还尝试了其他示例,但在我的场景中不起作用
任何人谁在htacees规则Maven可以帮助我在这方面。

tct7dpnv

tct7dpnv1#

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反向引用只包含从RewriteRule * 模式 * 捕获的product-info(保存复制),$2包含动态部分(A后跟6位数字)。
这是一个302(临时)重定向。请始终首先使用302进行测试,以避免潜在的缓存问题。
指令在.htaccess文件中的顺序很重要。在任何现有的重写之前,这个规则可能需要接近文件的顶部。

更新日期:

重定向是工作与您的代码,你能请让我知道参数模式,我需要的号码从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前缀,该前缀现在显式包含在 substitution 字符串中。

相关问题