需要htaccess重写才能删除id部分

时间:2013-02-27 17:24:26

标签: .htaccess mod-rewrite url-rewriting directory

我正在寻找相同网址的重写规则而不使用“# - ”#是文章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和该foldername中的每个类别中 。所以我希望有一个规则与我使用的规则相似,但我指定了特定的foldernames。感谢您对此事的任何帮助。

1 个答案:

答案 0 :(得分:1)

只需匹配文件夹名称。你没有提供任何,我会说你只想匹配文件夹foo,bar和baz:

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

在这里:

  1. 首先匹配您要匹配的文件夹子集
  2. 然后匹配这些文件夹中的任何类别
  3. 然后删除数字
  4. 次要挑剔:当你知道时,你的表达式会匹配字符(例如,在你的文章名称中的短划线之后),使用.+而不是.*是很好的。后者将匹配零个字符,我的猜测是,这不是一个有效的用例,所以最好不要允许它。