質問
私は正規表現で少し経験を持っているにもかかわらず、私が書いているいくつかのPHPスクリプトのために自分のルールをいくつか書いています。注意:少し
。基本的に私はindex.phpに引数、データベース内ナメクジとして定義され、ほとんどのURLを書き換えるなど、いくつかを除いて、すべてのURLを渡したい。
すなわち:/管理/設定/画像、/ libと/テンプレートが存在するが、私は書き換えることにしたくありません。 しかし、他のすべては、私はindex.phpのに引数として渡さたい。
私は現在、これをやってます:
url.rewrite-once = (
"^/(.*)$" => "/index.php?$1"
)
データベースナメクジで美しく動作します、しかし、それはまた、上記に記載されているフォルダをリダイレクトします。これらは、直接アクセスするために必要なファイルが含まれているが、私は試合から文字列を除外する方法を説明どこにも見つけることができません。
私はこれを行う方法を知っていたら、、私は残りを把握することができますが、正規表現に新しい私はどこから始めれば分からないされます。
任意の助けいただければ幸いです。
編集の 私は、以来、これらの与えてくれたショットます:
"^/(index\.php|admin|config|images|lib|template)" => "$0",
FFは、それらのフォルダのための無限のリダイレクトを報告するために、
"^/(?!(admin|config|images|lib|template))(.*)$" => "$0"
フォルダ以外のすべてを一致しません。
"^/([^(admin|config|images|lib|template)]*)$" => "/index.php?$1"
ここでも、何かを書き換えません。
"^/(.*)$" => "/index.php?$1"
私が書き換えをしたくないフォルダを含むすべてのものを、書き換えます。
解決
私は、次の式を探していたものを達成しているように見えるます:
"^/(?!(index\.php|admin|config|images|lib|template)).*$" => "/index.php?$0"
Iその後、ちょうど
trim( $_SERVER['argv'] ,"/")
index.phpの中にスラグを取得します。
他のヒント
これを試してください:
url.rewrite-once = (
"^/(index\.php|admin|config|images|lib|template)" => "$0",
"^/(.*)$" => "/index.php?$1"
)
所属していません StackOverflow