用于缩短网址服务的Mod_rewrite正则表达式

时间:2013-08-30 22:10:55

标签: regex mod-rewrite lighttpd

我最近做了一个小网址缩短。现在我一直试图弄清楚mod_rewrite的正则表达式。这就是我所拥有的:(对于lighttpd)

$HTTP["host"] =~ "mywebsite.com" {
    server.document-root = "/var/www/mywebsite.com"
    url.rewrite-once = ("^/create.php(.*)" => "/create.php$1",
                        "^/(.*)" => "/index.php?key=$1")
}

我不确定我做错了什么,这就是我想要它做的事情:

mydomain.com/blahblahblah - > mydomain.com/index.php?key=blahblahblah

除非是mydomain.com/create.php,然后我希望正则表达式忽略它。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

如何使用条件? (docs)!~是一个负面的正则表达式比较。

$HTTP["url"] !~ "^/create.php(.*)" {
    url.rewrite-once = ( "^/(.*)" => "/index.php?key=$1")
}

就像现在一样,匹配create.php的重写规则是一个NOP,它根本不会改变网址。

你也可以url.rewrite-once-if-not-file = ( "^/(.*)" => "/index.php?key=$1")

编辑:url.rewrite-once-if-not-file无效,url.rewrite-if-not-file是,但确实会产生与使用once重写不同的行为。