2012-01-03 6 views
1

そのフォルダの下にあるすべてのファイルが同じルールに従うようにフォルダを書き直す方法はありますか?たとえば、次のようにすべてのファイルが新しい書き換えルールで表示されるようにフォルダを書き換えます

5 PHPファイル(a.php、b.php、c.php、d.php、index.phpの)それで言うと、私はフォルダを持っていると私は、次のルールを使用する場合:

RewriteRule ^products/storage/?$ /content/products/storage/index.php [QSA,L] 

私はすべてのファイルをsite/products /apples/a.php、site.com/products/apples/b.phpなどのようにアクセスするように表示する方法がありますそれぞれのルールを書きますか?

私は以下を試しましたが、それは動作しませんでした。

RewriteRule ^products/storage/?$ /content/products/storage/ [QSA,L] 
私もそれのような私の他のルールを上書きしないようにする必要があります

RewriteRule ^products/storage/?$ /content/products/storage/product-name1/ [QSA,L] 
RewriteRule ^products/storage/?$ /content/products/storage/product-name2/ [QSA,L] 

任意のアイデア?

答えて

2

あなたの問題は正規表現の末尾に末尾の$です。 完全なURIproducts/storage(オプションの末尾のスラッシュ付き)に一致する場合にのみ、一致が許可されます。代わりに、次のことを試してみて、末尾$文字がないことを注意してください。

RewriteRule ^products/storage/? /content/products/storage/ [QSA,L] 

これは、(オプションの末尾にスラッシュ付き)製品/ストレージで始まるものと一致します。あなたが試みることができるproducts/storage/を追ったURIのすべてキャプチャし、再使用したい場合は別の方法として、:

RewriteRule ^products/storage(/?.+)?$ /content/products/storage$1 [QSA,L] 

UPDATE

を、あなたの更新のような他のRewriteRule Sを維持する必要がある場合質問には次のような条件を追加するといいでしょう:

RewriteCond !^products/storage/?$ 
RewriteRule ^products/storage(/?.+)?$ /content/products/storage$1 [QSA,L] 

RewriteCondは、条件が満たされない場合にのみ処理するようにRewriteRuleに指示します。

+0

hmmm他のルールを使用して問題が発生しています。だから、例えば私が持っている のRewriteRule ^製品/ストレージ/?$ /コンテンツ/製品/ストレージ/製品名1/[QSA、L] のRewriteRule ^製品/ストレージ/?$ /コンテンツ/製品/ストレージ/製品名2/[QSA、L]今 私は –

+1

が次にあなたが '明示それらの条件が満たされた場合に適用するからそれを防ぐために' RewriteRule'前にRewriteCond'条件を追加する必要がありますあなたは私を与えたルールを追加した場合、それらは動作しません。..これはあなたの質問で更新すべき情報です – rdlowrey

+0

さて、私はそれを更新しました。 RewriteCondについて私は何をしますか? –