2009-05-18 6 views
0

クエリ文字列をセグメント化されたURIに変換するhtaccessに書き換えルールを入れる方法はありますか?たとえば。クエリ文字列をセグメント化されたURIに変換する.htaccess書き換えルールを作成するにはどうすればよいですか?

http://domain.com/controller/method/?a=1&b=2&c=3 

が行うためにそこにあるすべてが削除され

http://domain.com/controller/method/a/1/b/2/c/3 

ように書き換えますでしょうか? &と= sをaに置き換えてください。しかし、どのように数字が.htaccessになっているのかよく分かりません。

PHPとCodeIgniterを使用していますApache。

答えて

1

なぜ、そのロジックをCodeIgniterコントローラの中に置くのではなく、.htaccessで行うのですか?

クエリ文字列とURLを処理する場合は、CodeIgniter's User Guideをチェックしてください。

+0

私はCodeIgniterのは、URLからクエリ文字列を受け取るとのトラブルを抱えています。ローカルサーバーでは正常に動作しますが、ライブサーバーでは、最後に '? 'を付けた後に何かを置くと、CIが404をスローします。そのため、クエリ文字列をCIのようにセグメント化されたURIに書き換えたいのですそれは手を投げることはありません。 – aalaap

+0

@aalaap $ config ['enable_query_strings'] = TRUEを設定することで、CIのクエリ文字列を有効にすることができます。これをチェックしてください:http://codeigniter.com/user_guide/general/urls.html – duckyflip

0

.htaccessで実行する場合は、mod_rewriteが必要です。

ルールはそれほど難しくありません。私はあなたに最小限の例を与え、あなたの必要性を修正するために正規表現を調整する必要があります。

RewiteRule ^/([a-z]+)/([a-z]+)$ /method/?$1=$2 
+0

私はこのルールでやっていることとまったく逆のことをする必要があります! – aalaap

0

これは、あなたが何ができるかです:

RewriteCond %{THE_REQUEST} ^GET\ /[^?]*\? 
RewriteCond %{QUERY_STRING} ^([^&=]+)=?([^&]*)&([^&=]+)=?([^&]*)&?(.*) 
RewriteRule^%{REQUEST_URI}/%1/%2/%3/%4?%5 [L] 
RewriteCond %{THE_REQUEST} ^GET\ /[^?]*\? 
RewriteCond %{QUERY_STRING} ^([^&=]+)=?([^&]*)&?(.*) 
RewriteRule^%{REQUEST_URI}?/%1/%2?%3 [L] 
+0

リダイレクトなしでURLを書き換える方法はありませんか?つまり、mod_rewriteがそうであることです。あなたが置いたルールから 'R = 301'を落とすとどうなりますか? – aalaap

+0

もちろんあります。 Rフラグを離れたままにしておきます。 – Gumbo

関連する問題