2011-09-23 40 views
1

我试图创建一个正则表达式,需要一个文件名,如:正则表达式匹配任何字符或最大值?

/cloud-support/filename.html#pagesection 

并重定向到:

/cloud-platform/filename#pagesection 

谁能告诉我如何做到这一点?

目前我已经有了部分的方式出现,具有:

"^/cloud-support/(.*)$" => "/cloud-platform/$1", 

会被重定向没关系的目录 - 但是仍然有多余的.html

难道我只是匹配字面.html与可选#?我会怎么做?

谢谢。

+0

这是一个URL重写,即Apache的mod_rewrite? –

+0

是的 - 实际上使用lighttpd,但我认为它很相似。 – Richard

回答

0

也许是这样的:(。*?)

"^/cloud-support/(.*?)(\.html)?(#.+)$" => "/cloud-platform/$1$3" 

,其中第一组是一个非贪婪匹配

+0

这不匹配/cloud-support/filename.html#甚至/cloud-support/filename.html –

+0

工作得非常好 - 我做的唯一的变化是使所有参数可选,即''^/cloud-support /(.*?)?(\.html)?(#.+)?$“=>”/ cloud-platform/$ 1 $ 3“'。谢谢! – Richard

+0

... @BobVale修正版是好的,我想。 – Richard

0
"^/cloud-support/(\w+).html(.*)" => "/cloud-platform/$1$2" 
0

会是这样的工作?

"^/cloud-support/([^.]+)[^#]*(.*)$" => "/cloud-platform/$1$2" 
0

你可以尝试正则表达式

"^/cloud-support/(.*)\.html(#.*)?$" 

\.html部分匹配.html(#.*)?允许可选#加一些东西。