我让自己头疼,试图弄清楚这是否可以做到。我有一个最近迁移的论坛,留下了数千个断开的动态链接。
典型的 URL 如下所示:
http://domain.com/Forum_Name/b10001/25/
(“b10001”是指论坛ID号,最后一个数字是指页码。)
新 URL 的格式如下:
http://domain.com/forums/Forum_Name.10001/
(没有页码。另外,请注意“b”不再在 ID 号前面。)
是否有可以实现此目的的重写规则?
我让自己头疼,试图弄清楚这是否可以做到。我有一个最近迁移的论坛,留下了数千个断开的动态链接。
典型的 URL 如下所示:
http://domain.com/Forum_Name/b10001/25/
(“b10001”是指论坛ID号,最后一个数字是指页码。)
新 URL 的格式如下:
http://domain.com/forums/Forum_Name.10001/
(没有页码。另外,请注意“b”不再在 ID 号前面。)
是否有可以实现此目的的重写规则?
我不是重写者,但按照我在这里读到的内容,这样的东西应该可以工作:
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/更正了模式检查
我想你要找的是
RewriteRule ^([a-zA-Z0-9_]+)/b([0-9]+)/.*$ forums/$1/$2/
确保 [] 部分的内容与您用于论坛名称和 ID 的格式相匹配。
对于参数,您可能希望R=301
强制进行永久重定向。