根据 URL 中的类别进行 301 重定向

根据 URL 中的类别进行 301 重定向

有人知道如何重定向包含产品父类别的 URL 吗?基本上,我想将大量产品重定向到我创建的简单登录页面,因此,我不想为每个产品进行重定向,而是希望定位父类别(制造商)并将其重定向到我的一个登录页面。

就像这些:

https://example.com/product/baader/baader-600/baader-600-belts/belt-rubber/
https://example.com/product/baader/baader-600/baader-600-belts/belt-urethane/
https://example.com/product/baader/baader-600/baader-600-parts/cover/
https://example.com/product/baader/baader-600/baader-600-parts/washer/

是否全部重定向到此目标网页:

https://example.com/replacement-parts/baader/baader-600/

所以我猜你会瞄准任何有“product/baader/baader-600/”的东西,然后放弃url的最后一部分(/baader-600-belts/belt-rubber/)并将其重定向到“/replacement-parts/baader/baader-600/”我不知道如何使sus成为RewriteRule。

答案1

欢迎来到 ServerFault。

我们不需要复杂的重写来实现它。下面的方法可行...

location /product/baader/baader-600/ { return 302 /replacement-parts/baader/baader-600/; }

重写等效内容...

rewrite ^/product/baader/baader-600/ http://example.com/replacement-parts/baader/baader-600/;

如果您需要 301 重定向,那么这里是等效的...

location /product/baader/baader-600/ { return 301 /replacement-parts/baader/baader-600/; }
rewrite ^/product/baader/baader-600/ /replacement-parts/baader/baader-600/ permanent;

答案2

假设制造商必须是动态的,那么您可以添加这样的规则。

location ~ /product/(.+) {
    rewrite ^.*(\/product\/)([\w|-]*)\/(.*)\/.*$ /replacement-parts/$2/$3 permanent;
}

Here $2 is a second match group for manufacturer, and $3 contains product part. 

 

相关内容