1

我让自己头疼,试图弄清楚这是否可以做到。我有一个最近迁移的论坛,留下了数千个断开的动态链接。

典型的 URL 如下所示:

http://domain.com/Forum_Name/b10001/25/
(“b10001”是指论坛ID号,最后一个数字是指页码。)

新 URL 的格式如下:

http://domain.com/forums/Forum_Name.10001/
(没有页码。另外,请注意“b”不再在 ID 号前面。)

是否有可以实现此目的的重写规则?

4

2 回答 2

1

我不是重写者,但按照我在这里读到的内容,这样的东西应该可以工作:

RewriteRule    ^([A-Za-z0-9-]+)/b([0-9])+(/[0-9]+)?/?.*$    forums/$1.$2/   [NC,L]

^([A-Za-z0-9-]+)表示“以字母数字字符串开头”,然后是/b常量,后跟[0-9]+(一位或多位数字),然后是带有一位或多位数字(页码,(/[0-9]+)?)的可选 /,最后以可选斜杠 ( /?$)。

如果 URL 与该模式匹配,则将其重写为forums/$1\.$2/. \.转义点(它是通配符),$1是模式的第一个匹配项(第一个字母数字字符串是论坛名称),并且$2是第二个匹配项,即 . 后面的数字b

最后,NC意味着模式不区分大小写,并且L是“最后一个” - 所以你不处理任何其他规则。我认为这取决于您,只需阅读链接的文章并选择您需要的标志 :)

编辑:使用http://htaccess.madewithlove.be/更正了模式检查

于 2012-11-12T06:15:54.513 回答
0

我想你要找的是

RewriteRule ^([a-zA-Z0-9_]+)/b([0-9]+)/.*$ forums/$1/$2/

确保 [] 部分的内容与您用于论坛名称和 ID 的格式相匹配。

对于参数,您可能希望R=301强制进行永久重定向。

于 2012-11-12T06:21:35.237 回答