2009-07-06 10 views
0

htaccessに続くURLのURL書き換えルールを作成したいと思います。Apache htaccess URLルールを書き換えますか?

http://example.com/vedios/category/fun/ -> http://example.com/vedios/category.php?cat=fun 

http://example.com/vedios/category/fun/?show=popular -> http://example.com/vedios/category.php?cat=comedy&show=popular 

http://example.com/vedios/category/fun/?show=popular&page=2 -> http://example.com/vedios/category.php?cat=comedy&show=popular&page=2 

http://example.com/vedios/category/fun/comedy/ -> http://example.com/vedios/category.php?cat=comedy 

http://example.com/vedios/category/fun/comedy/?show=popular -> http://example.com/vedios/category.php?cat=comedy&show=popular 

http://example.com/vedios/category/fun/comedy/?show=popular&page=3 -> http://example.com/vedios/category.php?cat=comedy&show=popular&page=3 

は私がhttp://example.com/vedio/category.php?cat=fun&show=popular&page=1が、その動作していないためRewriteRule category/([^.]+)/?([^.]+)$ /vedio/category.php?cat=$1&$2を試してみました。

上記の要件の正しいURL書き換えルールは何か教えてください。

答えて

4

クエリは、RewriteRuleディレクティブ内でチェックされたURLパスの一部ではありません。これを行うにはRewriteCond指示が必要です。

しかし、あなたは、単に新しいものに付加し、最初のクエリ文字列を取得するためにQSA flagを設定する必要があります。

RewriteRule category/([^.]+)/$ /vedio/category.php?cat=$1 [QSA] 
+0

パーフェクト+1と答えとしてマーク:) – Prashant

0

カテゴリスクリプトの私の正規表現は:mod_rewriteのは、すべてのURL(サーバー+ポート+パス)またはスクリプトへのパスだけを評価されている場合

/vedio/category/([^.]+)/\?([^.]+)$ 

それは依存します。

+0

'RewriteRule'ディレクティブは、単にURLパスをテストします。 .htaccessファイルで使用される場合、ディレクトリごとのコンテキスト接頭辞は、テストの前に削除され、ルールを適用した後に追加されます。 – Gumbo

+0

はい、あなたは大丈夫です、これがあなたの答えを投票してくれます:-) – sourcerebels

関連する問題