web-dev-qa-db-ja.com

Webサイトでの非直接ページリンク動作

私のウェブサイトの1つに実装する予定のメカニズムがあります。

私のウェブサイト内のリンクは、想定されているページを直接参照していないが、すべてはsingle PHP pageを参照し、独自のパラメーターを送信し、 single PHP pageこれらのパラメーターに基づいてDBで処理を行い、header("Location:$_GET['page_name']");...を使用して参照するはずの実際のページにリダイレクトします。

  • このメカニズムは検索エンジンに優しいものではありませんか、それとも大丈夫ですか?
  • このメカニズムは、Google PageRankで不利になりますか?
2
user3122

うーん、これを行うといくつかの問題があります。

まず、移動先のページの実際のURLは元のページにありません。すべてのリンクにpage.php?location=Home(page.phpがクエリを処理し、locationにリダイレクトする)があると、page.phpのURLのみが表示されます。実際にどのURLを訪れているかを見る人がどれだけいるかはわかりませんが、すべてのリンクが同じページを指しているのを見ると混乱する可能性があります。一部のWebサイトでは、発信リンクに対してこれを行っていますが、リンクのリンク先が一目でわからないので、いつも本当に困ります。

もちろん、JoomlaやMediaWikiのようなCMSはデフォルトでこれを行います(index.php?id = 1)が、パラメーターのないクリーンなURLは使いやすさとGoogleインデックス作成の両方が優れていると一般に受け入れられています。

検索エンジンに関しては、もちろんPHPヘッダーが役立ちます。ヘッダーで301リダイレクトコードを使用してから送信することができます。 http://phpprogrammingguide.blogspot.com/2005/11/php-header-301-redirect-moved.html

このようにして、検索エンジンは、他のすべてのページについても同様に、page.php?location=Home/home/と関連付けます。 Google Webmasterツールをインストールして、どのパラメーターを無視すべきか、どのパラメーターを無視すべきでないかを手動で指定することさえできます(locationは明らかにGoogleが異なる内部リンクを区別できるため、無視すべきではありません)。

また、ページにrel = "canonical"を追加すると、検索エンジンがどのURLをどのようにすべきかを認識しやすくなります。たとえ?location=x/x/の標準URLを持つページで終わる場合でも、正しいURLがインデックス付けされるようにします。

もう1つの問題は、ブラウザーの戻るボタンです。これはインターネット上で最も使用されるボタンであり、このスクリプトを使用するとサイトで機能しなくなります。戻るボタンをクリックすると、ユーザーはpage.phpページに移動し、再び前方にリダイレクトされるだけで、ユーザー側に多くの刺激を与え、あなたの側に誤った統計情報を引き起こします。

最後に、page.phpを中断させないことが本当に重要です。何らかの理由でリンクまたはページが壊れる場合があります。サイト内の壊れたページの1つは迷惑ですが、page.phpが壊れると、すべての内部リンクが無効になります。誰かがエラーなどに遭遇するとすぐにスクリプトからメールを受け取ることでこれを防ぐことができますが、注意してください。

あなたが他の方法でそれをすることができるならば、全体として私はそれを避けます。検索エンジンには回避策がありますが、それが何であれユーザビリティを損ないます。

0
Stephan Muller

301リダイレクトを使用する場合は、問題ありません。手順全体が少し奇妙に見えます。 mod_rewriteを使用して美しいURLを作成し、それでも1つのPHPスクリプトでレンダリングしてみませんか?

1
Ilian Iliev

あなたが今していることをして、静的リンクをページ上のどこかに他のページに追加してください(それらが多すぎない場合)。問題が解決しました。 ;)

0
john

あなたの問題を理解しています。特定のリンクをクリックしたユーザーや、特定のパートナーにアクセスしたユーザーの数などを追跡できます。

インデックス作成の問題はどうあるべきか、本当に言えません。私が最初に思いついたのは、ページジュースがターゲットページに渡されないため、検索エンジンがそれらのリンクを内部リンクと見なすことです。

しかし、ほとんどの場合にうまく機能するソリューションを提案します。これらのリンクでAJAXを使用します。次のように、これらのアンカーにrel属性を使用します。

<a rel="external" href="http:yourpartner.tld">See more here</a>

rel="external"を持つリンクをフィルタリングし、それらにイベントを添付します。クリックすると、hrefパラメーターを使用してajax呼び出しが行われ、クエリを実行します。 AJAX関数は、ユーザーが本当に自分のページにリダイレクトされるようにするため、またはエラーの場合にリダイレクトを防ぐために、trueまたはfalseを返す必要があります。

0
Dave