动态URL的Mod重写规则 - 这可能吗?

时间:2012-11-12 06:00:28

标签: .htaccess mod-rewrite

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

典型的网址如下所示:

http://domain.com/Forum_Name/b10001/25/
('b10001'表示论坛ID号,最后一个号表示页码。)

新网址的格式如下:

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

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

2 个答案:

答案 0 :(得分:1)

我不是改写者,但按照我读过的here,这样的事情应该有效:

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

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

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

最后,NC表示模式不区分大小写,L是“最后” - 因此您不会处理任何其他规则。我认为这取决于您,只需阅读链接的文章并选择您需要的标志:)

修改:使用http://htaccess.madewithlove.be/

更正了模式检查

答案 1 :(得分:0)

我认为您正在寻找的是

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

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

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