我已经让自己头疼,试图弄清楚是否可以做到这一点。我有一个最近迁移的论坛,留下了数千个破碎的动态链接。
典型的网址如下所示:
http://domain.com/Forum_Name/b10001/25/
('b10001'表示论坛ID号,最后一个号表示页码。)
新网址的格式如下:
http://domain.com/forums/Forum_Name.10001/
(没有页码。另外,请注意'b'不再位于ID号前面。)
是否有可以实现此目的的重写规则?
答案 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
是“最后” - 因此您不会处理任何其他规则。我认为这取决于您,只需阅读链接的文章并选择您需要的标志:)
答案 1 :(得分:0)
我认为您正在寻找的是
RewriteRule ^([a-zA-Z0-9_]+)/b([0-9]+)/.*$ forums/$1/$2/
确保[]部分的内容与您用于论坛名称和ID的格式相符。
对于参数,您可能希望R=301
强制执行永久重定向。