使用htaccess从URL中删除单词



我正在尝试从url中删除类别名称。我使用以下规则。

要从url中删除单个类别名称,我正在尝试以下操作。这工作正常。

RewriteEngine On
RewriteRule ^(.*)/man/(.*).html$ /$1/$2.html [NC,R=301,L]
http://www.test.com/en/man/product-1.html
Output: http://www.test.com/en/product-1.html

要从url中删除多个子类别名称,我正在尝试以下操作。

RewriteEngine On
RewriteRule ^(.*)/man/(.*).html$ /$1/$2.html [NC,R=301,L]
RewriteRule ^(.*)/man/jeans/(.*).html$ /$1/$2.html [NC,R=301,L]
http://www.test.com/en/man/jeans/product-1.html
Output: http://www.test.com/en/jeans/product-1.html
**expected: http://www.test.com/en/product-1.html**

我有大约30个类别,我想使用htaccess从url中删除所有类别名称。有近路吗?或者,我们可以在数组中添加所有类别名称来检查是否存在,然后规则会删除它吗?

对于您遇到的问题,您可以调整正则表达式以使用[^/]+而不是.*,因为.*匹配尽可能长的字符串,因此当您希望为URI/en/man/jeans/product-1.html执行第二条规则时,会执行第一条规则。像这样:

RewriteEngine On
RewriteRule ^([^/]+)/hands/jeans/([^/.]+).html$ /$1/$2.html [NC,NE,R=301,L]
RewriteRule ^([^/]+)/hands/([^/.]+).html$ /$1/$2.html [NC,NE,R=301,L]

您还可以使用将第一条规则设置为通用,以覆盖所有30个类别

RewriteRule ^([^/]+)/hands/[^/]+/([^/.]+).html$ /$1/$2.html [NC,NE,R=301,L]

最新更新