2013-02-27 91 views
0

我正在寻找一个重写规则到相同的网址没有“# - ”#是文章ID,所以它随每个特定的文章而变化。类别名称也会更改。需要htaccess重写删除id部分

www.site.com/foldername/categoryname/45-article<br> 
www.site.com/foldername/categoryname/334-article<br> 
www.site.com/foldername/anothercategoryname/634-article 

我用...

RewriteEngine On<br> 
RewriteRule ^(.*)/[\d]*-(.*)$ /$1/$2 [R=301,L] 

这对所有foldernames的伟大工程,它的类,但我的问题是,我需要它的工作只在特定foldernames并在每个产品类别该文件夹名称。所以我希望有一个规则类似于我使用的规则,但我在哪里指定特定的文件夹名称。谢谢你对这件事的任何帮助。

+0

那么,不要对'。*'进行匹配。匹配字符串文字,例如文件夹名称。 *类别名称是什么,它们是静态的还是有限的? – Madbreaks 2013-02-27 17:28:14

+0

文件夹名称的示例是chevy。该文件夹名称中的类别是impala,malibu,corvette。例如雪佛兰将有10类,但别名文件夹只有6个。 – user1658495 2013-02-27 17:32:06

回答

1

只匹配文件夹名称。你不提供任何,我会说你想匹配的文件夹富,酒吧和巴兹只:

  1. 符合对文件夹的子集要匹配:你

    RewriteRule ^(foo|bar|baz)/([^\/]+)/[\d]+-(.+)$ /$1/$2/$3 [R=301,L] 
            ^^^  ^^^ ^^^^^^ 
            1   2  3 
    

    这里

  2. 那么这些文件夹内匹配任何类别
  3. 然后删除的数字

小鸡蛋里挑骨头:当你知道您的表情将与字符匹配(例如,在文章名称中短划线之后),使用.+而不是.*是很好的。后者将匹配零个字符,我的猜测是,这不是一个有效的用例,所以最好不要允许它。