2011-12-09 32 views
2

私はURLことを例えば "+" を "= +"htaccessでプラス(+)記号を "= +"に変換するにはどうすればよいですか?

が含まれているすべてのURLを変換したい:

http://www.bedavaemlaksitesi.com/mersinemlakrehberi210/index3.php?+ 

は次のようにする必要があります:

http://www.bedavaemlaksitesi.com/mersinemlakrehberi210/index3.php?=+ 

は、といくつかを試してみました他の行は、これまでのところ動作しません、私はそれがループや何かを引き起こすと思います。

RewriteRule ^([^/\.]+)+([^/\.]+)?$ $1=+$2 [R] 
+1

あなたがそれを望むのはなぜ?また、RewriteRuleはクエリ文字列だけでなく、パスを調べます。あなたの2つのキャプチャグループは同一で、最初のものだけが一致し、 '(..)+'のラッピングは最も役に立たない。 'RewriteLog'を使って、なぜ失敗するのかを確認してください。 – mario

+0

なぜですか?私のWebホスティング会社の制限のため回避策を検索しています。この質問と回答をよく確認してください:http://stackoverflow.com/a/8439606/655792 – motto

+0

htaccessファイル内のその行を使用すると、それ以上の問題を防ぐことができます: RewriteCond $ 1!^(index \ .php |(。*)\ .swf |(。*)\ .jpg |(。*)\ .txt | images | robots | css | docs | cache) RewriteRule ^(。*)$ index.php?query = $ 1 [L] "+"と他の特殊文字を使用しようとするような状況では、codeigniterのwikiのソリューションが動作しない場合があります。 http://codeigniter.com/wiki/Godaddy_Installaton_Tips – motto

答えて

1

私はちょうどあなたにその特定の例のためのリテラルの答えを与えるつもりです。あなたが最初にそれを一致させるために、別の条件を必要としそうであるように

RewriteCond %{QUERY_STRING} ^([+])$ 
RewriteRule /index3.php$ index3.php?=(%1) [R,L] 

あなたは、QSの各+をrepleaceすることはできません:それは実際にあなたを助けるかどうかわかりません。あなたの元のルールについても


:charclassのドットをエスケープ

RewriteRule ^([^/\.]+)+([^/\.]+)?$ $1=+$2 [R] 

が冗長である、[^/.]は十分です。そして少なくとも2つのグループの間のセパレータが必要です/意味を作るために。しかし、そこにquery_stringをマッチさせることはできません。それは現在のファイルパスとは別に処理されます。

はalsosを参照してください:ServerFault: Everything You Ever Wanted to Know about Mod_Rewrite Rules but Were Afraid to Ask? - と - HttpdWiki: Manipulating the Query String

+0

それは動作していない、あなたはそれをテストしましたか?それとも私のウェブサーバーですか? – motto

+0

いいえ、それをテストするのは気にしませんでした。 'RewriteLog'を設定する – mario

関連する問題