2012-11-12 24 views
1

我已经给自己头痛,试图找出是否可以做到这一点。我有一个刚刚迁移的论坛,留下了数以千计的动态链接。动态URL的Mod重写规则 - 这可能吗?

一个典型的URL看起来像这样:

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

新的URL此格式:

http://domain.com/forums/Forum_Name.10001/
(无页码此外,注意到 'b',不再在ID号码的前面。)

有没有可以实现这一点的重写规则?

回答

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]+)?),最后以可选斜线(/?$)结尾。

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

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

编辑标志:校正图案与http://htaccess.madewithlove.be/

+0

感谢您的链接和解释,这有助于很多! – Ben

0

检查我想你要找的是什么

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

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

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

+0

有了这个语法,如果在URL字符串的末尾还有其他东西,比如锚点哈希,它会影响吗? – Ben