2012-01-11 15 views
0

これらのRewriteRulesをどのように1つの行に結合できますか?各パラメータはオプションですか?オプションのRewriteRuleパラメータ

RewriteRule ^(.*)/(.*)/(.*)/(.*)/ index.php?_page=$1&_sub=$2&_area=$3&_ex=$4 [NC,QSA,L] 
RewriteRule ^(.*)/(.*)/(.*)/ index.php?_page=$1&_sub=$2&_area=$3 [NC,QSA,L] 
RewriteRule ^(.*)/(.*)/ index.php?_page=$1&_sub=$2 [NC,QSA,L] 
RewriteRule ^(.*)/ index.php?_page=$1 [NC,QSA,L] 
RewriteRule^index.php [NC,QSA] 

私は.*は自動的に私が行うときは、1行(最初のルールが、すべてを削除する)には、それが働いて停止することが[^/]+とそれを置き換えることができますので、次のブロックがそれ以外の場合は、あまりにも撮影しています必要であることを信じますか?

答えて

1

あなたが求めている解決策がないので、あなたは失望するかもしれません。

また、(n + 1)個のサブディレクトリごとに変数名が変わります...解決策はありません。

とにかく、あなたは次のようなものを使用してRewriteRulesを減らすことができます:空の二番目の引数になりますが、両方の一つまたは二つの引数と一致する

RewriteRule ^([^/]*)(/([^/]*))?/ index.php?_page=$1&_sub=$2 [NC,QSA,L] 

を。

+1

まあこれは '、作品のRewriteRule ^アプリ/?([\ W] +)?/?([\ W] +)?/?([\ W] +)?/?((。* ?)+)?$ index.php?_page = $ 1&_sub = $ 2&_area = $ 3&_ex = $ 4 [NC、QSA、L] ' – James

+0

私の答えは「ほぼ」良いと考えることができます。 :) –

+0

ええ、申し訳ありません、私はそれをチェックするつもりだった! – James

0

rexexp ^app/?([\w]+)?/?([\w]+)?/?([\w]+)?/?((.*?)+)?$は、開始カスケードと意味的に異なります。

  • オプションは/どこから来たのですか?
  • 「。」などの単語以外の文字を処理する方法を教えてください。
  • 貪欲でない演算子([\ w] +) /は冗長です
  • 擬似ディレクトリの追加パラメータはどうなりますか?
  • とにかく正規表現の言葉では、([^/]*)は、/?で正しく動作するため、グリーディーグが優れています。

    RewriteRule ^([^/]*)/?^([^/]*)/?^([^/]*)/?^([^/]*)$ index.php?_page=$1&_sub=$2_area=$3&_ex=$4 [NC,QSA,L] 
    
    関連する問題