質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

4回答

1683閲覧

JSで複数URLをトップページにリダイレクトさせたい

mmmaaasuu

総合スコア13

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2020/05/13 04:01

編集2020/05/13 04:51

すみません、JS初心者です。お分かりになる方、何卒よろしくお願いいたします。
.htaccessが使用できないASPで、複数の下層ページを指定してトップページへリダイレクトさせたいです。

JavaScript

1var url1 = 'https:/example.com/page01'; 2var url2 = 'https://example.com/'; 3if(location.href.startsWith(url1)){ 4 location.href = url2; 5}

これでpage01をトップページにリダイレクトさせることはできました。
page02,page03…についても同様にトップページにリダイレクトさせたい場合、どのように書けば良いでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/05/13 04:02

CMSが使えて.htaccessが使えないという状況は中々ないですが、 ドメインは自身が所有しているものでなければ例示ドメインを利用してください。
m.ts10806

2020/05/13 04:02

あと、「調べたけど分からなかった」だけで伝わる情報は何もありません。 「検索に使ったキーワード」「参考にした記事」あと「それによって試したこと」が全て揃っていてようやく伝わります。
yambejp

2020/05/13 04:05

存在するページをわざわざTOPページにリダイレクトする意図がわかりません
mmmaaasuu

2020/05/13 04:12

ASPの間違いでした。訂正します。 「ドメインは自身が所有しているものでなければ例示ドメインを利用してください。」 自身所有ドメインではありません。例示ドメインを利用とは具体的にはどうすれば良いのでしょうか? 調べたけど記載したコードしかわかりませんでした。「js リダイレクト 複数 指定」などで検索しましたがやりたいことに該当するものが見つかりませんでした。 「「調べたけど分からなかった」だけで伝わる情報は何もありません。」 こういった指摘をいただくということは、書いたこと自体が蛇足だったのかと思いますので該当文章削除します。
mmmaaasuu

2020/05/13 04:27

「ドメインは自身が所有しているものでなければ例示ドメインを利用してください。」 すみません、こちらご指摘の意味 理解しました。
m.ts10806

2020/05/13 04:29

いずれにしても「検索に使ったキーワード」「参考にした記事」あと「それによって試したこと」は全て必要ですよ。 なければ丸投げです
mmmaaasuu

2020/05/13 04:42

yambejpさん>> SEO面での意図がございます。
mmmaaasuu

2020/05/13 05:12 編集

m.ts10806さん>> このサイトの(質問の?)作法知らず、すみません。 試す以前にやりたいことに該当するものが見つけられなかったので質問している次第です。 記載している var url1 = の部分を複数指定する(ような?)方法が知りたく質問しています。検索キーワードは上述のものに var も。 丸投げの意図はありません。結果 丸投げ と捉えられればそれまでですが。
guest

回答4

0

存在するページを勝手に転送するようなサイトがSEOに有利とは思えませんが
法則性があるのであればlocation.hrefに対して正規表現でマッチしたものを
転送すればいいでしょう

投稿2020/05/13 04:45

yambejp

総合スコア116724

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mmmaaasuu

2020/05/13 05:19 編集

ありがとうございます。 あまりSEO詳しくないですが、ページステータスが404になっているurlに対してトップページへリダイレクトしたい、と言う知人から相談受けて質問しました。 page01,page02,page03…に該当する部分には数字列ということしか共通点はなく、その数字列には法則性がないので個々に指定する必要があるかと思っています。その場合の書き方お分かりでしたら教えていただけないでしょうか?よろしくお願い致します。
yambejp

2020/05/13 05:29 編集

> ページステータスが404 404エラーがでているということはそのページ自体が見つからないということです。存在しないページにjsはかけませんので起案の方法は難しいでしょう もっとも存在しないページに直リンしないかぎりSEO的に影響はないと思います
mmmaaasuu

2020/05/13 06:15

すみません、書いた内容が良くなかったです。(間違ってます。) 知人が言う「ページステータスが404」は取り扱いがないと表示される、の意味でした。 ですのでページは存在し、取り扱いがないと表示される商品ページ、カテゴリーページに対してトップへリダイレクトさせたいということです。 1url分のリダイレクトは質問文にあるコードで実現しています。
guest

0

URLにpageの文字列がある場合、全てリダイレクトする例です。

javascript

1if(location.href.indexOf('page') > 0){ 2 location.href = url2; 3}

投稿2020/05/13 04:05

omori3

総合スコア274

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mmmaaasuu

2020/05/13 04:24

ありがとうございます。 すみません、page01、page02は例でして、実際には規則性のない約10桁の数字の羅列がその部分に該当します。それらを個別に指定してリダイレクトさせたいです。
omori3

2020/05/13 04:25

リダイレクトさせたくない、約10桁の数字の羅列のURLもあるのでしょうか?
mmmaaasuu

2020/05/13 04:33

はい。任意のURLを複数指定して、それらだけをトップページにリダイレクトさせたいです。
guest

0

oikashinoaさんありがとうございました。

javascript

1const topPage = 'https://example.com/'; 2const noSales = ["0000000001", "0000000002", "0000000004"]; // リダイレクトさせたい取り扱い無し商品 3 4const url = new URL(location.href); 5const pathname = url.pathname; //https://example.com/0000000004っていう感じでないなら適切に直して下さい。 6 7if (noSales.includes(pathname)) { //noSalesにあったらトップページに遷移 8 location.href = topPage; 9} 10```一般的なサイトであればoikashinoaさんが書いてくださった上記で実現可能かと思います。 11 12⇩私の場合、ASPの仕様なのかpathnameが取得できなかったため絶対パスでのurl一致判別に修正してうまくいきました 13 14```javascript 15var url = location.href ; 16var array = ['https://example.com/0000000001','https://example.com/0000000002','https://example.com/0000000003']; 17var url2 = 'https://example.com/'; 18if(array.includes(url)){ 19 location.href = url2; 20}

投稿2020/05/14 02:57

編集2020/05/14 03:21
mmmaaasuu

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

こんな風にString.prototype.includes()で含まれているかチェックしたいということでしょうか?

js

1const topPage = 'https://example.com/'; 2const noSales = ["0000000001", "0000000002", "0000000004"] // リダイレクトさせたい取り扱い無し商品 3 4const url = new URL(location.href); 5const pathname = url.pathname; //https://example.com/0000000004っていう感じでないなら適切に直して下さい。 6 7if (noSales.includes(pathname)) { //noSalesにあったらトップページに遷移 8 location.href = topPage; 9} 10

投稿2020/05/13 11:22

編集2020/05/13 11:23
oikashinoa

総合スコア2826

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mmmaaasuu

2020/05/14 02:57

ありがとうございます!書いていただいたコードの内容を調べて、いじったらうまくいきました。大変助かりました。 書いていただいたコードでうまくいかず。原因を探るとASPの仕様のせいなのか pathname が取得できていませんでした。絶対パスで試したらうまくいきました。
mmmaaasuu

2020/05/14 03:05

すみません、ベストアンサーに選んだつもりだったのですが、ブラウザの読み込みのタイムラグがあったのかうまくいってないようです、、、 このサイトの使い方、もっと理解したいと思います。
kei344

2020/05/14 04:24

To: mmmaaasuuさん ベストアンサーは付け替えられるはずなので、試してみてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問