2010-12-16 3 views
0
RewriteEngine On 
RewriteRule books/(.*)/(.*) php/booksByLanguage.php?lid=$2 
RewriteRule list_books/(.*)/(.*) php/listBooks.php?cat_id=$2 


のhtaccessのRewriteRuleが正しく、私はURLを書き換えるためにhtaccessファイルを使用しています

作業

問題は、二行目(RewriteRule list_books/(.*)/(.*) php/listBooks.php?cat_id=$2)が正常に動作していないです(上記の私が使用していたコードである)ではありません。つまり、私は、最初の行(RewriteRule books/(.*)/(.*) php/booksByLanguage.php?lid=$2)をコメントするときに、第2のラインが正常に動作します



次のコードは正常に動作します

RewriteEngine On 
    #RewriteRule books/(.*)/(.*) php/booksByLanguage.php?lid=$2 
    RewriteRule list_books/(.*)/(.*) php/listBooks.php?cat_id=$2 


私は両方のルールをしたいです私のために働く。

答えて

2

開始マーカーと終了マーカーを追加してみてください。

のRewriteRule^/書籍/(。)/(。)$ PHP/booksByLanguage.php?蓋= $ 2

あなたの最初のルールは文句を言わないlist_booksの試合のためにトリガされるこの方法。

+0

+1問題を正しく認識しました。サイト構造のため、-1解決策がおそらくは機能しません。 +1 effoert。合計:+1 –

+0

:)あなたの3回のクリックの明確化に感謝します。私はこれが、この特定の問題のために大騒ぎのためにpraveenmonを得ると思う。 –

+0

ありがとう、キャプテンあなたの答えは私のために働いた。 @ジョー私はあなたが言ったことを理解していない、私はここで新しいです。いずれにせよ、私はこの答えを受け入れたとマークし、 "この答えは役に立つ" 2にしました。 – praveenmon

2

問題は、あなたは^で始まる行を定義しませんでした。 ですので、2番目のルールも一致する場合、最初のルールは常に一致します。 は文字列に一致する必要があるためです。例:

books.*booksshelfなどmybookshelf ^books.*と一致しますこれだけは動作しますが、かなりではないはずですbookshelf

RewriteEngine On 
RewriteRule list_books/(.+)/(.+)$ php/listBooks.php?cat_id=$2 [L] 
RewriteRule books/(.+)/(.+)$ php/booksByLanguage.php?lid=$2 

と一致します。 事は、(更新されたコードの)最初のルールが一致したとき、2番目のルールも同じです。それ以外の方法ではありません。

だから私はそれを置いて最後のスイッチ[L]を設定して、その後に他のルールが実行されないようにします。

これは間違っています。

書き換えルールを定義して、必要なものと一致するようにする必要があります。

私はあなたの構造を知らないので、これは動作しないかもしれませんが、私は次のようなものを想像することができます。これはあなたが始まるスラッシュを含める必要があり、あなたのルートレベルであれば

RewriteEngine On 
RewriteRule ^/list_books/(.+)/(.+)$ php/listBooks.php?cat_id=$2 
RewriteRule ^/books/(.+)/(.+)$ php/booksByLanguage.php?lid=$2 

を、などその要求の一部ですが、私はあなたの構造を知らずにそれを伝えません。

+0

joe ur答えも正しいです。ありがとうございます。 Ur詳細な答えは素晴らしいです。私はこの質問を閉じることができます。 – praveenmon

+0

あなたのquestinは答えを受け入れることによって "閉じられています"。閉会の質問は、評判が十分にあるメンバーからのいくつかの投票によってのみ機能し、悪い質問や不自由な質問のみを対象としています。 –

関連する問題