2009-08-17 4 views
0

に末尾の値を保持:mod_rewriteのは - あるドメインから別のドメインにリダイレクトすると、私は、これはmod_rewriteのではかなりまっすぐ進むの質問だと思いURL

私は別のものにリダイレクトする必要があるドメインを、得たが、後に任意の値を保ちます最初のURLの最後のスラッシュ(/)を2番目のURLにスワッシュします。

domain.com/4433は、明確にするために上場

をdomain.com/folder/?p=4333に転送する必要があります

から:domain.com/4433

へ: domain.com/folder/?p=4333

編集:

するRewriteCondの%{HTTP_HOST}^domain.com $

するRewriteRule ^([0-9A-Z] *)$: はいくつかのテストをした、我々は、以下の解決策を見つけ?/フォルダ/ P = $ 1 [NC]

心から、 - bakkelun

+0

HTTPリダイレクトを使用したい場合や、ユーザーが気づかずにサーバーがバックグラウンドでこれを実行したい場合は、 –

+0

これは、ユーザーが気付かないうちに実行する必要があります。しかし、私たちは解決策を見つけました: RewriteCond%{HTTP_HOST}^domain.com $ RewriteRule ^([0-9a-z] *)$/folder /?p = $ 1 [NC] – Coreus

答えて

0
RewriteEngine On 
RewriteCond %{QUERY_STRING} ^$ 
RewriteRule ^(.*)$ domain.com/folder?p=$1 [R=301,L] 
+0

ドメインが同じ仮想ホストで実行されている場合、無限のリダイレクトループが発生します。 – Residuum

+0

@Residuum:その場合だけではありません。 *置換*は相対パスに過ぎません。したがって、 '/ 4433'はリダイレクトされる' /domain.com/domain.com/folder?p = domain.com/folder'にリダイレクトされる '/domain.com/folder?p = 4433'にリダイレクトされます'/domain.com/domain.com/domain.com/folder?p = domain.com/domain.com/folder'などへ – Gumbo

+0

私の不注意な答えにコメントしてくれてありがとう。私は(おそらく別の不注意な)修正を入れようとしました。私は実際のソリューションは、有効なURLの完全なセットがどのようにドメインを探すかに依存すると思います。 – Zed

0

ちょうどの場合:domain.com = domain1.comとdomain2.com? domain1.comはdomain2.comにリダイレクトする必要がありますか?どちらも同じサーバー上で実行されます(オプション)?

[EDIT:]

あなたが本当に唯一のコメントで述べたようなことをしたい場合は、次の操作を行います。そうでなければ

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^domain1.com$ 
RewriteRule ^4433$ http://domain2.com/folder/?p=4433 [R=301,L] 

、ベネディクト・エゲルが言ったように、またはとを実際のリダイレクトが必要な場合はR = 301になります。 それとも、あなたはそれが唯一の番号にリダイレクトしたい場合は、次の操作を行います

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^domain1.com$ 
RewriteRule ^([0-9])+$ http://domain2.com/folder/?p=$1 [R=301,L] 

のRewriteCondをチェックし、定義されたバーチャルホストはその後、書き換えルールが適用され、domain2.com domain1.comですが、ない場合、および指定されたURLに少なくとも1つの数字で構成される数字ストリング(0-9)+だけHTTPステータス301 [R = 301]経由でリダイレクトされます。 [L]はこれを最後のルールに適用します。

+0

おそらく私はそれに言及するのを忘れていましたが、domain/4433へのアクセスはdomain.com/folder/?p=4333にリダイレクトする必要があります "domain.com"だけでリダイレクトしないでください。 – Coreus

+0

あなたは何かを混ぜた。 '[(0-9)+]'は '([0-9])+'でなければなりません。 – Gumbo

+0

ありがとう、Gumbo。私はそのtypo/thinkoを修正しました。 – Residuum

0

あなたが本当にきれいなURLを持っていることではなくリダイレ​​クトしたくない場合は、あなたが

RewriteEngine On 
RewriteRule ^/(.+)$ /folder?p=$1 [L] 

を使用することができますこれは、最初のスラッシュの後にすべてのものを取り、$ 1から、それを挿入します - しかし、後に何かがあります場合にのみ、スラッシュ。ユーザーが気付かないように、リダイレクトは発行されません。任意の更なる情報がない

0

、この試してください:あなたは.htaccessファイル内のルールを使用したい場合は主要なスラッシュを削除し、

RewriteEngine on 
RewriteRule ^/([^/]+)$ /folder/?p=$1 

を。

関連する問題