我最近做了一个小网址缩短。现在我一直试图弄清楚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,然后我希望正则表达式忽略它。我怎样才能做到这一点?
答案 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
重写不同的行为。