0

最近、小さな URL 短縮サービスを作成しました。今、私は 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はありませんが、would による書き換えとは異なる動作を生成しonceます。

于 2013-08-31T22:13:54.403 に答える