2012-03-05 19 views
1

.htaccessでURLを書き換えて、301リダイレクトしたいと思っています。 ?// localhostの/ラボ/ customer_132 /ラームクンド=ヨーテボリ-STAD.htaccess rewrite url [apache]

私はそれがこのように見えると

のhttpにリダイレクトします:

元のURLは、この、HTTPのようなものです: // localhost/labs/customer_132 /?page_id = 11#goteborg-stad

試してみてください。

ありがとうございました!

+0

元のURIにも「page_id = 11」はありませんか? – anubhava

+0

ええ、私は文字列の最後の部分が "滞在"し、その部分を変更することがわかっています。そのWordpressとのajaxページの変更。 –

答えて

1

ステラメントRewriteRuleを使用して直接クエリ文字列にアクセスすることはできません。その代わりに、の前に、kundフィールドがあることをチェックし、その値をキャプチャする必要があります。次に、RewriteRule%Nを使用して、取得した値を使用できます。

RewriteEngine On 

RewriteCond %{QUERY_STRING} kund=([\w\-]+) 
RewriteRule ^/labs/customer_132/ /labs/customer_132/?page_id=11#%1 [NC,R,L] 
+0

ボロディンありがとう、それを試みる!それは仕事をしない場合戻って:) –

-1

あなたは.htaccessファイル内で書き換えエンジンを有効にする必要があります:.htaccessファイルは、ルートフォルダにある場合や、(動作するはずです、そして、

RewriteEngine On 

単一のURLについては、以下をリダイレクトサーバー)。

編集:クエリ文字列が正確にkund=goteborg-stad(大文字または小文字)である場合は、クエリ文字列の状態を確認する必要があり、これが一致します。

RewriteCond %{QUERY_STRING} ^kund=goteborg-stad$ [NC] 
RewriteRule ^labs\/customer_132\/$ /labs/customer_132/?page_id=11#goteborg-stad [NE,R,L] 

NEは、リダイレクトで#記号をエスケープしないようにApacheに指示します。

異なるURLの選択をリダイレクトする場合(顧客IDが変更されるなど)、明確にする必要があります。

+0

-1: 'RewriteRule'がそれを見る前にURLからクエリ文字列が削除されるため、*決して*一致しない' RewriteRule'があります。 – Borodin

+0

申し訳ありません私は愚かであった。クエリを見るには、%{QUERY_STRING}を使用してください。それから、いつものようにリダイレクトしますが、 '[NE]'をインクルードするようにしてください。ハッシュはあなたの答えのように '%23'にエンコードされません。 'kund'クエリは、同じ' page_id'にリダイレクトされるので、これが必要であるかどうかは不明であるため、フラグメントとして使用していません。 – Jack