怎么写这个规则?

时间:2011-12-04 15:05:31

标签: regex apache mod-rewrite

我需要有关重写规则的帮助,我无法使其正常工作。

旧网址是这样的:

/A/B-C.html 

/A/B-C.html#postD 

A:与“ - ”连接的一个或多个单词。
B:一个号码 C:与“ - ”连接的一个或多个单词,可能包含数字 D:数字

一个典型的例子:

/general-discussion/1234-how-are-you.html 

/general-discussion/1234-how-are-you.html#post5678  

新网址就像

/t1234-how-are-you.html

/t1234-how-are-you.html#post5678  

我想出了以下格式,但它无法匹配任何网址:

RewriteRule ^/[a-z][-a-z]+/([1-9][0-9]*-.+\.html(#post[0-9]+)?)$ /t$1 [R=301,L,QSA]  

1 个答案:

答案 0 :(得分:1)

值得注意的是,URL中的“Fragment”部分(#之后的位)仅是浏览器本地的,而不是传递给Web服务器,因此您无法对其进行任何匹配。 / p>

以下规则适合您。

RewriteRule ^[a-z][-a-z]+/([0-9]+-[a-z0-9-]+\.html)$ /t$1 [R=301,L,QSA]