2017-05-15 10 views
0

私は自分のウェブサイトにVulcan.jsを使用しています。デフォルトでは、すべてのページの標準URLがホームページを指すように設定されています。今、各ページのページURLをポイントするように標準を設定したいと思います。React.js - 各ページの動的標準URL

バルカンは、あなたに何かを意味するなら、ヘッドタグを作るために​​を使用してください。 React Routerも使用します。

これは私が持っている現在のコードです:だから私が得たエラーがある

import React, { PropTypes, Component } from 'react'; 
    import Helmet from 'react-helmet'; 
    import Header from './Header.jsx'; 


    const canonical = window.location.href; // this don't work, says ReferenceError: window is not defined 



    const Layout = ({children}) => 

    <div className="wrapper" id="wrapper"> 

     <link rel="canonical" href={canonical} /> 

     <Header/> 

     <div className="main"> 

     {children} 

     </div> 


    </div> 

    export default Layout; 

にReferenceError:ウィンドウが

が定義されていない私は、プロがで反応していません。 jsので、私はこれを単独で把握することはできません。しかし私は、私より経験のある人にとっては簡単な解決策だと思います。

ご協力いただければ幸いです。

+1

このコードはサーバーで実行できますか?それは 'window'が定義されていない唯一の場所です。 –

+0

'react-router'の' props'には、あなたが探しているものを得るかもしれないと思う 'location'が含まれています。あなたは[これらのドキュメント](http://docs.vulcanjs.org/routing.html)に従って親コンポーネントをラップする必要があるように見えます –

+0

@MichelFloyd true、これは分かりました。ありがとう! :) – Plavookac

答えて

0

これで問題は、サーバー側で常にウィンドウが定義されていないためです。

ただし、別の解決方法があります。

私はバルカンスラックの助けを借りてきました。ここにはGitHub commitの修正があります。

-1

「const canonical = window.location.href」のアプローチは、標準URLをどのように定義すべきかということではありません。ある標準的なURLの1つは、これがページの本当のURLであることをエンジンのボットに検索すると言うが、ユーザーが入ってきたURLとは必ずしも同じではない。あなたがURLの書き換えを使用し、ページに入る方法が1つ以上ある場合、このアプローチは問題を引き起こします。標準的なもの(1つでなければならない)はユーザーの入力値に設定されるか、ページ、またはその他...)。 別のことは、canonical urlが彼が来たページからリダイレクトするのに使用されていることです。同じように見えない場合は、例えばhttps://www.gsmarena.com/apple_iphone_7-8064.phpに行き、idを '8064'から '8858'に変更してみてくださいURLはどうなりますか? ページの厳密なデータ(例:電話ID)を使用して完全なURLを解決できる共通の正規URL生成プログラムが必要です。また、別のURLが付いている場合は標準URLにリダイレクトする必要があります。 詳細情報:https://support.google.com/webmasters/answer/139066?hl=en

+0

あなたが提案しているものの例を追加することを検討してください、リンクが将来壊れるかもしれません。 – Ivan86

関連する問題