2010-11-28 21 views
0

私が正しく動作するように私の書き換えルールを取得してトラブルを抱えています。.. domain.com/123 domain.com/abc ためhtaccessの書き換えルールのトラブル

ErrorDocument 404 /404.php 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !^companies/ 
RewriteRule ^companies\/\?(.*)([A-Za-z]+) index.php?cpy=$1 [R=301,L,NC] 

RewriteRule ^([0-9]+)/?$ index.php?cid=$1 [L] 
RewriteRule ^([A-Za-z_]+)/?$ index.php?cat=$1 [L] 

書き換えルールは、

正常に動作するように見えます

が、私は仕事に行くことができない、他の一つはApacheが

に一致するものを見つけられないようだ domain.com/companies/?list=this

です

RewriteRule ^companies\/\?(.*)([A-Za-z]+) index.php?cpy=$1 [R=301,L,NC] 

誰かがそのルールの何が間違っているのか理解できますか?それが何か他のものであれば?

答えて

0

RewriteRule通常、クエリ文字列と一致しません。

あなたは例えばなど、%1, %2として登場するパラメータ化マッチでRewriteCondを使用して、それらの上に

を一致させることができます。

RewriteCond %{QUERY_STRING} ^(.*)([A-Za-z]+)$ 
RewriteRule ^companies\/ index.php?cpy=%1 [R=301,L,NC] 
+0

ご清聴ありがとうございました。私はそれを知らなかったし、あなたが想像することができるように、それはあなたが試合を見つけるしようとしているときに世界のすべての違いを作ります。 RewriteCond%{QUERY_STRING} ^(。*)([A-Za-z] +) RewriteRule^companies \//index.php?cpy=%1%2 [ L] – kris

+0

@kris:私は何年も前から 'mod_rewrite'を使ってきましたが、これは比較的最近になって見つかったものです。ドキュメントは確かにそれを強調しません。あなたはソートされてうれしいです。 – Orbling

関連する問題