1

例: http://www.ebuyer.com/flange

この URL は存在しませんが、サイトにアクセスすると、フランジの検索結果を含む検索ページに移動します。

まず、.htaccess と ErrorDocumnet を使用して検索スクリプトを指定し、URL に含まれていた検索結果を返すようにしたと思います。

これはかなり簡単に実行できますが、ebuyer は 200 OK で応答し、私のメソッドは 404 Not found で応答することに気付きました。ユーザーはこれを見ることはありませんが、SEO の観点からは、これが 200 OK を返す方が良いと思います。

彼らはどうやってこれをしたのですか?

ありがとう

4

2 に答える 2

1

404ステータスがブラウザに返されるため、ErrorDocumentディレクティブを介して実行されないのは正しいことです。これは実際にはRewriteRuleを介して行われます。次の例を参照してください。

RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d  [OR]
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ search.php?q=$1 [L,QSA]

これは単に、要求されたファイル、ディレクトリ、またはリンクがWebサーバーに存在しない場合に、要求されたURIをinternally forward呼び出して検索パラメーターとして渡すスクリプトへの要求を意味します。最終的に、aは。の代わりにブラウザに返されます。search.phpqHTTP 200404

たとえば、内部的になり、ブラウザに200を返します/flange/search.php?q=flange

于 2013-02-04T14:58:38.627 に答える
1

何が起こっているのかというと、いくつかのルーティングルールが機能しているということです。基本的に、少しのコードでURL(たとえば、www.ebuyer.com / flange)を確認し、「フランジ」の側面が検索して表示することになっているキーワードであることを認識しています。

同様の概念については、この質問のURLのように。これは、次の論理的な概念に分類されます。

[ドメイン]/[機能]/[識別子]/[人間が読みやすいようにするための追加情報]

これは、サーバー上のモジュールに、「質問」機能を調べて、14689056の識別子で質問を配信する必要があることを通知します。

この状況では404ではなく、検索結果ページでシステムに応答させるのは簡単です。これは、URLに基​​づいてバックグラウンドでユーザーを既にリダイレクトしているためです。

.NET(3.5以降)とIISには、Global.Asaxで操作できるURLルーティングに関連付けられた一連の優れたクラスがあります(以前のバージョンの.NETでもこれを実行できますが、少し面倒です。ネイティブクラスがないため、関与します)。

Apacheでは、私が.NETプログラマーであるため、mod_rewriteやその他のオッズに対処する必要があります。この質問PHPでのURLのルーティングにより、必要な方向に進むことができます。

于 2013-02-04T14:58:56.277 に答える