0

おはようございます、

私は、各ページの 2 つのものを mysql から php まで動的に比較するサイトに取り組んでいます。例として、旅行先を比較するとしましょう。これらのページの 1 つの URL の例は次のようになります。"http://sometravelwebsite.com/destinations/compare/New-York-City-vs-Tokyo"

PHP の書き方、都市の順序は関係ありません。入力すれば

../New-York-City-vs-Tokyo

入力した場合と同じ情報が得られます

../Tokyo-vs-New-York-City 

唯一の違いは、どの都市の情報が左側にあり、どの都市の情報が右側にあるかです。

SEO の目的では、ページのバージョンが 1 つだけで、他の URL がメインの URL にリダイレクトされる方がよいでしょう (たとえば../New-York-City-vs-Tokyo、メインの URL は Google によってインデックス化されますが、他の URL:../Tokyo-vs-New-York-Cityが入力された場合、それは 301メインの URL にリダイレクトされます)。

私の質問は次のとおりです。これは動的に実行できますか?

私が考えることができる唯一のことは、mysql データベースで自動インクリメント インデックスを使用し、常にインデックス番号が小さい都市を左側に配置し、インデックス番号が大きい都市を右側に配置することです。

とは言っても、どの都市がページのどちら側にあるかをある程度制御できるとよいと思います。私はすべての比較のためにどの都市がどちらの側に行くのかを調べて決定するつもりはありませんが(追加された都市が増えるほど狂ってしまいます)、都市を配置するためにそれらのいくつかを制御したいと思います最初に表示されるページの左側のより望ましい特性 (個人が左から右に読んでいると仮定)。

php、mysql、.htaccess、またはその他の方法でこれを動的に行うためのより良い方法を考えられる人はいますか?

どんな助けでも大歓迎です!

4

2 に答える 2

0

動的 PHP は両方を処理しますが、それらが検索エンジンからのものである場合、リダイレクトが必要ですか? 単純な命名規則に従うか、常にアルファベット順に並べるか、別のバリエーションがないようにします。「A Vs B」または「B Vs A」が検索に役立つ場合、両方が等しく返されることをGoogleが気にしないと確信しています。

パフォーマンスの高いオブジェクトを左側に配置できます。URL を常にアルファベット順にし、2 つの都市 (またはそれ以上) を配列に入れ、アルファベット順に並べ替えます。ページに表示する場合は、データベースにクエリを実行し、変換が高くなると思われるものの計算された「スコア」に基づいて、左から右に表示します (MySQL ステートメントで並べ替えます)。

于 2014-04-16T08:16:44.950 に答える
0

のように作成して配列する

$allowed_left = array('New York City','Milan', 'London');

次に、city1 が左側で許可されていないかどうかをテストし、true の場合は、都市を入れ替えて「逆 URL」にリダイレクトします。

if ($city1 != in_array($allowed_left) ){
   if ($city2 != in_array($allowed_left)){
      header("Location: http://sometravelwebsite.com/destinations/compare/not_allowed.php"); 
   }
   else {
      header("HTTP/1.1 301 Moved Permanently"); 
      header("Location: http://sometravelwebsite.com/destinations/compare/".$city2."-vs-".$city1);
   }
}

これは明らかに、左側の都市の 1 つが許可されることを前提としています。そうしないと、どちらの都市も許可リストにない場合、無限ループに陥る可能性があります。

于 2014-03-25T16:29:23.573 に答える