2009-09-04 17 views
2

mod_rewriteでApache 2.2を使用しています。mod_rewriteプロスペクティブプロトコルでURLにリダイレクト

mod_rewriteにプロトコルを含むURL全体を強制的に書き直す方法はありますか?私は、リダイレクトが先頭にhttp://が含まれている場合、それは自動的に全体のURLを書き換えます知っているが、私は、独自のプロトコルを使用してURLにリダイレクトしようとしている:fcp://

リダイレクトは、それだけにリダイレクトするように私はそれを追加した場合書き換えと私のサーバーのURLはそうのように追加:

http://www.example.com/fcp://@mailstaff.... 

は私がこれに実行されませんので、完全なURLとしてfcp://を治療するためのモジュールを設定することはできますか?私はでのRewriteRuleをトリガするために行くとき

firstclass-email  fcp://@mailstaff.example.com/ 

UPDATE:ここには、私が使用していたコードです:

RewriteCond ${externals:$2|Unknown} !Unknown 
RewriteRule ^(internal|external)/(.*)/? ${externals:$2} [R=301,NE,L,NS] 

externals RewriteMap命令の中では、私はこのようなラインを持っています行く:

http://example.com/internal/firstclass-email 

TLYここに私をリダイレクト:

http://example.com/fcp://@mailstaff.example.com/ 

私はfcp://からhttp://にプロトコル部分を変更した場合、Apacheはそれは絶対URLだ実現し、正常に動作します。私はまた、絶対にする必要がありますfcp://を認識するためにApacheをしたい。

答えて

2

は、Apacheは唯一のような認識が、URLパスとして扱われていないhttphttpsftpmailtoなどカスタムURLスキームのような最も一般的なURLスキームを処理することができます。

対応するスキームの詳細については、source code of mod_rewrite.cis_absolute_uri機能を参照してください。

+1

それは私が恐れていたものです:(ユーザランドでこれを変更する方法はありますか? – matpie

+2

Apacheの代わりにリダイレクトを処理するスクリプトを使用してください。 – Gumbo

+0

"Apacheは...しか処理できません" - 厳密に言うと、* mod_rewrite *他のモジュール(mod_alias: 'Redirect' /' RedirectMatch'など)は、それらを「処理」するように見えます。 – DocRoot

0

これを試しましたか?

RewriteRule ^/yourUrl$ fcp://otherUrl [RL] 
+0

。しかし、とにかく、あなた自身でそれを試みましたか? – Gumbo

+0

それを試していないが、それは何を試してみるの私の提案です。それに間違ったことがありますか? –

+0

私はRewriteRuleが現在使っているものが何もないので、質問/回答として投稿しました。 –

0

かなり古い質問ですが、私は答えることができます。私も同じ問題がありました。これは2回のリダイレクトで解決できます。

Redirect /restore1 fcp://example.com/restore 

RewriteEngine On 
RewriteCond %{HTTP_USER_AGENT} (android|bb\d+|meego).+mobile..... 
RewriteCond %{HTTP_USER_AGENT} ^(1207|6310|6590|3gso|..... 
RewriteRule ^restore/(.*)$ http://example.com/restore1/$1 
関連する問題