我正在尝试从url中删除类别名称。我为此使用了以下规则。
要从url中删除单个类别名称,我正在尝试以下操作。这工作正常。
created_at
要从网址中删除多个子类别名称,我正在尝试遵循。
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
我大约有30个类别,我想使用htaccess从网址中删除所有类别名称。有什么办法吗?还是我们可以在数组中添加所有类别名称以检查是否存在,然后规则将其删除?
答案 0 :(得分:1)
对于您遇到的问题,您可以调整正则表达式以使用[^/]+
而不是.*
,因为.*
匹配最长的字符串,因此当您希望第二条规则执行时,第一条规则将执行为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]
您还可以使用以下方式将第一条规则设为 generic (通用),以涵盖所有30个类别:
RewriteRule ^([^/]+)/hands/[^/]+/([^/.]+)\.html$ /$1/$2.html [NC,NE,R=301,L]