2009-03-23 33 views
0

正規表現の経験がほとんどありませんが、私が書いているいくつかのPHPスクリプトのための独自のルールをいくつか書いています。注:少し。(LigHTTPd)RegExp書き換えルール

基本的には、いくつかの例外を除いてすべてのURLをindex.phpに渡し、データベース内のslugとして定義されているほとんどのURLを書き換えたいとします。

つまり、/ admin、/ config、/ images、/ lib、/ templateは存在しますが、書き換えたくありません。 それ以外は、私はindex.phpに引数として渡したいと思います。

私は現在でこれをやっている:

データベースナメクジで美しく動作します
url.rewrite-once = (
    "^/(.*)$" => "/index.php?$1" 
) 

は、しかし、それはまた、上記に記載されているフォルダをリダイレクトします。これらには直接アクセスする必要のあるファイルが含まれていますが、マッチから文字列を除外する方法については説明できません。

これを行う方法が分かれば、残りの部分を見つけ出すことができますが、正規表現を初めて使う人はどこから始めるべきかわかりません。

ご協力いただければ幸いです。

編集:私は以来これらショット与えてくれた :FFは、それらのフォルダのための無限のリダイレクトを報告

"^/(index\.php|admin|config|images|lib|template)" => "$0", 

たために、

"^/(?!(admin|config|images|lib|template))(.*)$" => "$0" 

フォルダ以外はすべて一致しません。

"^/([^(admin|config|images|lib|template)]*)$" => "/index.php?$1" 

また、何も書き換えません。

"^/(.*)$" => "/index.php?$1" 

書き換えたくないフォルダも含めてすべて書き換えます。

答えて

1

をスラグを取得する。

0

このお試しください:index.phpの中

"^/(?!(index\.php|admin|config|images|lib|template)).*$" => "/index.php?$0" 

Iそしてちょうど

trim($_SERVER['argv'] ,"/") 

:私は、私は次の式で探していたものを達成しているように見える

url.rewrite-once = (
    "^/(index\.php|admin|config|images|lib|template)" => "$0", 
    "^/(.*)$" => "/index.php?$1" 
) 
+0

残念ながら、FFは私に無限のリダイレクションエラーをもたらします。これは、単純な試みをしたときに得たものです: "/ template" => "/ template" –