2011-01-25 13 views
4

私のウェブサイトの特定のディレクトリには、いくつかの特定のニーズがあります。私は首尾よくそれを行いますのhtaccessファイルを作成する問題を抱えているhtaccessサブディレクトリ名をクエリーコードのパラメータに書き換えます

/thisDirectory?param=subDirectory 

として通ってくるために

/thisDirectory/subDirectory 

を変更する必要があります。私はいくつかの異なるものを試してみたが、私はこれが一番近いと思う:

RewriteEngine On 
RewriteRule ^/directory/(.*)\??(.*)$ /directory/?page=$1&$2 

私はすべてのヘルプははるかに高く評価されるだろう500サーバーエラー、無限のリダイレクトループ、などなどのすべての種類に直面してきたおかげで、 !

答えて

3

...私はそれが書き換えられたディレクトリの名前を変更し、動作しているようですパターンから-directoryパス接頭辞:

.htaccessの書き換えエンジンを使用して(常に特定のディレクトリについても同様である)ごとのディレクトリプレフィックスをファイルがRewriteRuleパターンマッチングのために自動的に除去と自動的にが追加された後、が追加されましたhスラッシュまたはプロトコル名)置換はルールセットの終わりに遭遇します。大手/だろうとルールは次のようになり、ドキュメントルートディレクトリの場合

RewriteRule ^directory/(.*)\??(.*)$ /directory/?page=$1&$2 

しかし、それ以外にも、RewriteRuleのみURIパスではなく、クエリを確認することができます。それを行うにはRewriteCondが必要です。 .*はすべて、でも空の文字列を(つまり/directory/後に空のパスセグメントの場合である)と一致するよう代わりに.*.+は無限再帰を避ける必要があります。ここ

RewriteRule ^directory/(.+)$ /directory/?page=$1 [QSA] 

:これを試してみてください。 QSA flagは、要求されたURIクエリを新しいURIクエリに自動的に追加することです。

1

かなりフラストレーションの後...私はこの問題は、私は[L]はループしていない、それの世話をするだろうと思ったが、同じ「ディレクトリ」(への書き換えを行うとしていたと思います...しかし、それはいないようでしたその場合には)。あなたがあたりをストリップしなければならないと私は、これはディレクトリごとのコンテキストでまったく機能しないことに驚いている

RewriteBase /my/base/rewrite/ 
RewriteRule ^directory/(.*)$ newDirectory/?page=$1 [L] 
関連する問題