Regex 如何编写此规则?

Regex 如何编写此规则?,regex,apache,mod-rewrite,Regex,Apache,Mod Rewrite,我需要一个重写规则的帮助,我无法让它工作 旧的URL如下所示: /A/B-C.html 或 A:一个或多个连有“-”的单词 B:一个数字 C:一个或多个以“-”串联的单词,可能包含数字。 D:一个数字 一个典型的例子是: /general-discussion/1234-how-are-you.html 或 /general-discussion/1234-how-are-you.html#post5678 /t1234-how-are-you.html#post5678 新

我需要一个重写规则的帮助,我无法让它工作

旧的URL如下所示:

/A/B-C.html 

A:一个或多个连有“-”的单词
B:一个数字
C:一个或多个以“-”串联的单词,可能包含数字。
D:一个数字

一个典型的例子是:

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

/general-discussion/1234-how-are-you.html#post5678  
/t1234-how-are-you.html#post5678  
新的URL如下所示

/t1234-how-are-you.html

/general-discussion/1234-how-are-you.html#post5678  
/t1234-how-are-you.html#post5678  
我提出了以下格式,但它与任何URL都不匹配:

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

这里值得注意的是,URL的“片段”部分(在#之后的位)仅在浏览器本地,并且没有传递到web服务器,因此您无法对其进行任何匹配

以下规则适用于您

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

这里值得注意的是,URL的“片段”部分(在#之后的位)仅在浏览器本地,并且没有传递到web服务器,因此您无法对其进行任何匹配

以下规则适用于您

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

嗯,真奇怪,你的正则表达式能用。不知道问题出在哪里。有没有可能是其他地方出了问题?我有其他的重写规则,可能是受它们的影响。我现在很困惑。我怎样才能使它成为一个明确的重定向?当请求/general discussion/1234-how-are-you.html时,我希望浏览器显示/t1234-how-are-you.html,当前URL/t1234-how-are-you.html运行良好(它在内部被重定向到一个php文件),但我无法使/general discussion/1234-how-are-you.html正常工作。好像我的重定向被忽略了。我想在其他正常工作的重定向之前更改URL。没关系,我放弃了,重新更改了URL.Hm。真奇怪,你的正则表达式能用。不知道问题出在哪里。有没有可能是其他地方出了问题?我有其他的重写规则,可能是受它们的影响。我现在很困惑。我怎样才能使它成为一个明确的重定向?当请求/general discussion/1234-how-are-you.html时,我希望浏览器显示/t1234-how-are-you.html,当前URL/t1234-how-are-you.html运行良好(它在内部被重定向到一个php文件),但我无法使/general discussion/1234-how-are-you.html正常工作。好像我的重定向被忽略了。我想在其他正常工作的重定向之前更改URL。没关系,我放弃了,重新更改了URL。