2012-04-12 4 views
1

私のドメインからPHP Getクエリを削除しようとしています。たとえば、example.com/?url=1234を表示する代わりに、example.com/1234に書き換えて、クエリを非表示にして削除しないようにしたいとします。私はこれが可能であることを知っているし、これを行う方法について多くのチュートリアルを読んだが、私のコードはうまくいきません。Modリライトヘルプ - PHP getクエリを隠す

RewriteEngine On 
RewriteCond %{QUERY_STRING} url= 
RewriteRule (.*) http://example.com/$1? [R=301] 

はこれが何をやっていることは完全にクエリをストリッピングされ、代わりにちょうど?url=セグメントを除去する:ここで私は現在しようとしているものです。

答えて

0

をあなたはそれについて間違った方法ラウンドを考えています。書き換えは、クライアントが見るものではなく、サーバー専用のものです。

つまり、example.com/1234は、クライアントがexample.com?url = 1234を使用しているかのように動作させることができます。

RewriteEngine On 
RewriteRule (.*) http://example.com/url=$1 [QSA] 
+0

これはうまくいきませんでした。 –

+0

私の編集したコメントをチェックしてください。私はあなたが誤解しているかもしれないと思います:) – LasseValentini

0

あなたはRewriteCondラインでのクエリ文字列の関連部分を抽出する必要があります。この次の行を使用しますを達成するため

RewriteEngine On 
RewriteCond %{QUERY_STRING} url=(.*)(&|$) 
RewriteRule (.*) http://example.com/$1%1? [R=301] 

上記は、指定した他のクエリ文字列パラメータを破棄します(下記の例を参照)。 指定されている場合は、ファイル名も保持されます。

例:どちらか動作していない

http://example.com/?url=1234  ----> http://example.com/1234 
http://example.com/a/?url=1234  ----> http://example.com/a/1234 
http://example.com/?url=1234&a=b ----> http://example.com/1234 
+0

私はこの行を試しましたが、私は404エラーを受け取りますか? –

+0

これは、リダイレクトループに最初に書き換えて、1トンの&をURLに追加してから、正常に削除されたURLに404エラーをスローします。 –

+0

(例)フォルダ「1234」は存在しますか?そうでなければ、もちろん404エラーを投げるでしょう。要求をインデックスファイル(例えば 'index.php')に与えたいのですか?もしそうなら、これはあなたが尋ねたものではありません。それについて別の質問をすることをお勧めします。 – diolemo