2009-05-06 15 views
3

新しいDiggbarを使用すると、現在あるURLの前にhttp://digg.comを置くことができ、Diggの短縮URLが作成されます。私は彼らがmodrewriteでこれをやっていると仮定しているだけです。Diggbar modrewrite - modrewriteを使ってURLをどのように渡しますか?

これはどのように行われますか?私が取り組んでいるウェブサイトでこれを試してみると、私はそれが爆発しているようです。

私は次の操作を実行できるようにしたい:

http://example.com/http://stackoverflow.com/question/ask 

と、私はこのmodrewriteを使用する場合、これは

http://example.com/index.php?url=http://stackoverflow.com/question/ask 

に行くことができますがmodrewriteを持っている:

RewriteEngine on 
RewriteRule ^([A-Za-z0-9]+)$ /message.php?id=$1 [L] 

動作しません。私は間違って何をしていますか?

答えて

5

Apacheは空のパスセグメントを削除するため、request lineから値を取得する必要があります。最初に要求されたURIパス/http://foobar//http:/foobar/になります。しかし、リクエスト行(THE_REQUEST)は手付かずのまま:

RewriteCond %{THE_REQUEST} ^GET\ /(https?://[^\s]+) 
RewriteRule ^https?:/ index.php?url=%1 [L] 
+0

優れています。 「 に「RewriteEngine」を追加するだけで済みました!ありがとうございました! – JoshFinnie

1

あなたはその正規表現内の文字と数字だけを探しているので、コロンとスラッシュは表示されません。

RewriteEngine on 
RewriteRule ^http://(.+)$ /index.php?url=$1 [L] 

これはあなたがここでしかURLをキャッチ確認します、そして:

あなたは、おそらくこのような何かをお勧めします);また、htaccessファイルの例とmessage.phpでのindex.phpを使用していますあなたはまだ普通のページを持つことができます! (example.com/index.phpに行った場合、何が起きたか考えてみると無限ループになります)

+1

あなたは非常に良い、アカウントのhttps –

+0

に取ることもできます。私はmessages.phpの代わりにindex.phpのような小さなキャッチで自分の投稿を再読することは決してうまくいかない。 https://とhttp://を考慮すると、それにはどのようなステップが必要でしょうか? – JoshFinnie

+0

正規表現を^ httpsに変更することができます://(。+)$ –

関連する問題