0

我最近做了一个小网址缩短器。现在我一直在试图找出 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,然后我希望正则表达式忽略它。我怎样才能做到这一点?

4

1 回答 1

0

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

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

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

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

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

于 2013-08-31T22:13:54.403 回答