使用htaccess从URL中删除单词

时间:2018-07-18 06:10:37

标签: .htaccess

我正在尝试从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从网址中删除所有类别名称。有什么办法吗?还是我们可以在数组中添加所有类别名称以检查是否存在,然后规则将其删除?

1 个答案:

答案 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]