42038
[Web魚拓](http://megalodon.jp/)というサービスがあり、そのサービスではURLの先頭に  
`gyo.tc/`を付与したページに遷移するとその時点でのページのコピーが取得できます。

これを手軽に実行したいと思い、ブックマークレットに以下のJavaScriptを作成しました。

```

    javascript: location.href = 'gyo.tc/' + location.href
    
```

しかし、このスクリプトを実行すると、  
`example.com/gyo.tc/exmaple.com`のようになってしまいます。  
やりたいこととしては、`gyo.tc/exmaple.com`のリンクを作成することなのですが、  
このスクリプトのどの部分が原因なのでしょう。。。

ちなみに、`F12`でデベロッパーツールを開いてコンソールに

```

    'gyo.tc/' + location.href
    
```

と入力すると、きちんと`gyo.tc/exmaple.com`が表示されます。

Chromeで試していて、バージョンは`64.0.3282.167`です。
CC BY-SA 3.0
2018-02-27T08:11:02.403
42035
2018-02-27T09:58:57.643
2018-02-27T08:55:14.907
3054
24197
question
javascript
location.href にドメインから始まるURLを設定しても別サイトに移動しない
`gyo.tc/...` というURLは、現在位置からの相対URLとして解釈されます。  
相対URLとみなされないためには、`https://gyo.tc/...` や `//gyo.tc/...` といった形式にします。
CC BY-SA 3.0
2018-02-27T08:51:44.243
42036
2018-02-27T08:51:44.243
3054
42035
answer
```

    javascript: location.href = '//gyo.tc/' + location.href
    
```

と修正をしてみたところ、`http`のサイトでは期待通り動作しました。が、  
`https`のサイトで実行するとWeb魚拓のトップページにリダイレクトされてしまったので、

`http`のサイトで正しく動作した際のレスポンスヘッダを確認したところ、  
`gyo.tc/`をURLの先頭に付与した場合、`https://megalodon.jp/?url=example.com`  
のようにWeb魚拓のサイトのクエリパラメータに対象のサイトのURLが付与されたものが  
返ってきていました。

なので、ブックマークレットのスクリプトを以下のように修正したところ、  
正しく動作するようになりました。

```

    javascript:location.href = 'https://megalodon.jp/?url=' + location.href
    
```
CC BY-SA 3.0
2018-02-27T09:58:57.643
42038
2018-02-27T09:58:57.643
24197
42035
answer