0

.htaccessには、次のようなRewriteRulesがかなりあります。

RewriteRule ^something/(\d+)/start    /index.php?ix=$1
RewriteRule ^embed/something/(\d+)/start    /index.php?ix=$1&fEmbed=1

これら2つの違いは、主要な「embed /」だけなので、これらを1つのRewriteRuleに組み合わせることが有益だと思いました。私の試みは立ち往生しています

RewriteRule ^(embed/)?something/(\d+)/start    /index.php?ix=$2&fEmbed=$1

これは「&fEmbed = embed /」を設定しますが、これは本当に私が望んでいることではありません。$ 1の内容を評価し、別の何か(つまり、「1」)を出力したいと思います。

最初の2つのRewriteRuleを1つのRewriteRuleに結合しながら、これにアプローチする方法についてのアイデアはありますか?

4

2 に答える 2

1

2 つのルールであるべきだと思いますが、同じことを行うべきではありません。以下はテストされていませんが、「すぐに」機能しない場合は、意図が明確であることを願っています。

RewriteRule ^(embed/)?something/(\d+)/start$    /index.php?ix=$2
RewriteRule ^embed/(.*)    $1&fEmbed=1

「/start」は常に URL の末尾にあると想定しています。そうでない場合は、もう少し難しいです。

編集: Vegardのコメントを読んで、ルールを交換することで処理できるのではないかと考えています:

RewriteRule ^embed/(.*)    $1&fEmbed=1
RewriteRule ^something/(\d+)/start    /index.php?ix=$1

それでも、これが機能するかどうかは、実際のアプリケーションに依存します。

于 2008-12-23T10:44:30.503 に答える
0

PEZのアイデアで作業して、これが私が思いついたものです:

RewriteRule ^something/(\d+)/start(&fEmbed=1)?    /index.php?ixQuiz=$1&fStart=1$2
RewriteRule ^embed/(.*)                         $1&fEmbed=1

あまりきれいではありませんが、うまくいきます。「something/」で始まる複数のルールを設定できるようになりました。それらはすべて「embed/」を使用して接頭辞を付けることができます。

于 2008-12-23T13:04:54.963 に答える