url - リスト - webサイト情報を一括取得




URLルーティング:フレンドリーなURLを作成する際のスペースと不正な文字の処理 (8)

私はURLルーティングとたくさんの素晴らしい提案について多くの議論をしてきましたが、現実の世界では、私が議論していないことの一つがあります:

  1. 空白と空白文字を含む URLの作成
  2. DBのクエリ

カテゴリーとオプションのサブカテゴリを持つ記事があるメディカルサイトを構築しているとします。 (1対多)。 ( 例を使用することはできましたが、医療分野には長い言葉がたくさんあります

例のカテゴリ/サブ/記事の構造:

  1. あなたの一般的な健康(カテゴリー)
    • 自然健康(サブカテゴリ)
      1. あなたの体の免疫システムとなぜそれが助けを必要とするのか。 (記事)
      2. 植物やハーブは本当に解決策ですか?
      3. 私は強化食品を食べるべきですか?
    • ホメオパシー薬
      1. ホメオパシー薬は何ですか?
    • 健康的な食事
      1. 1日にコーヒー10杯を飲むべきですか?
      2. 有機野菜はそれに値するのですか?
      3. バーガーキングは悪いですか?
      4. 「フランスのカフェ」またはアメリカのコーヒーは健康的ですか?
  2. 疾患および条件(カテゴリー)
    • 自己免疫疾患(サブカテゴリ)
      1. 人々の#1殺人者は何らかの病気です
      2. 助けを得る方法
    • 遺伝的条件
      1. 妊娠前に二頭筋症を予防する。
      2. あなたは長い間生きる傾向にありますか?
  3. フーバー博士の個人的な提案(カテゴリー)
    1. 漢方薬と自然療法に関する私の考え(記事 - サブカテゴリなし)
    2. なぜあなたの健康を気にする必要がありますか?
    3. 正しい食べ物を食べることは可能です。
    4. 無血手術は時代を迎えていますか?

このような構造では、/ {Category} / {subcategory} / {Article Title}のようにいくつかのLOOONG URLを用意しています

さらに、#!のような数多くの違法な文字があります。 ? 'é'など

だから、質問(S)は:

  1. あなたはどのように違法な文字やスペースを扱いますか? (長所と短所)
  2. これをデータベースから取得することはできますか
    • 言い換えれば、 データベースを信頼して 、タイトルを渡すすべてのタイトルを取得し、キーをデータベースに渡す(データベースへの2回の呼び出し)キーをコード内で見つけることができますか?

注:私はいつも、/ products / beverages / Short-Product-Name /いくつかの醜い例を処理する方法のような素敵な例を見ています^ _ ^


フォローアップとして。 私はいくつかのアイデアを持っています。 だから、アイデアにコメントしたり、質問にあなた自身の答えを与えてください。

解決策1:不正な文字をすべてダッシュで置き換えます。

  • www.mysite.com/diseases---conditions/Auto-immune-disorders/the--1-killer-of-people-is-some-disease/

それは私には少し醜い...

解決策2:不正な文字を取り除き、スペースを1つのダッシュで置き換えます。

  • www.mysite.com/diseases-conditions/Auto-immune-disorders/the-1-killer-of-people-is-some-disease/

解決策3いくつかのルールを適用して、特定の文字を単語に置き換えます。

  • www.mysite.com/diseases-and-conditions/Auto-immune-disorders/the-number1-killer-of-people-is-some-disease/

ソリューション#4すべてのスペースを取り除き、大文字を使用する

  • www.mysite.com/DiseasesAndConditions/AutoImmuneDisorders/TheNumber1KillerOfPeopleIsSomeDisease/

(大文字と小文字を区別するサーバーでうまく動作せず、読みにくい)


私が通常行うことは、合法的な文字のみを許可し、フレンドリーなURLを可能な限り短く保つことです。 フレンドリーなURLは人によって挿入されることが多く、タイトルやコンテンツからフレンドリーなURLを生成することはなく、そのURLを使用してデータベースを照会することも重要です。 私はテーブルの列、例えばfriendly_urlを使用して、Webサイト管理者がフレンドリなURLを挿入できるようにします。


私はwordpressのやり方をお勧めします - 小さな単語を取り除き、違法な文字をダッシュ​​(最大1ダッシュ)で置き換えてから、ユーザーが望むならばユーザーにURLを修正させます。 SEOでは、URLを設定可能にする方がよいでしょう。


私は、この問題をデータベースに追加する(例:UrlTitleをタイトル列に追加)、 '&'記号を 'と'で置き換えた空白文字、および空白をアンダースコアで置き換えてタイトルを保存することで、この問題を解決しました。 その後、UrlTitleで検索し、ページのタイトルや場所にある実際のものを使用することができます。


解決策2は、それらの典型的なアプローチです。いくつかの改良が可能です。 読みやすさのためにアポストロフィをダッシュ​​の代わりに何も表示しない。 通常、データベースのタイトルとURLの正当なバージョンを「本物の」タイトルと同様に保存すると、インデックス付きのSELECT WHEREを使用してアイテムを選択できます。

しかしながら。 適切にエンコードしている限り、URLパス部分に実際の不正な文字はありません。 たとえば、スペース、ハッシュ、またはスラッシュは、%20、%23または%2Fとしてエンコードできます。 このようにすれば、 任意の文字列をURL部分にエンコードすることができるため、実際の変更されていないタイトルでデータベースから戻すことができます。

あなたのWebフレームワークにもよるが、これにはいくつかの潜在的な問題がある。 たとえば、CGIに基づくものは、エンコードされた%2Fとreal /の違いを知ることができず、フレームワーク/デプロイメントによってはUnicode文字に問題が生じることがあります。

代わりに、シンプルで安全な解決策は、URLにプライマリキーを含めることです。アドレスをより良くするためにタイトル部分を使用します。 例えば。:

http://www.example.com/x/category-name/subcat-name/article-name/348254863

これは例えば方法です。 Amazonはそれを行います。 データベースのタイトルを変更して、古いタイトルのURLを自動的に新しいURLにリダイレクトできるという利点があります。


私は自分がスペースを取り除くならば、読みやすさの理由から(あなたはそれに下線を付け、 _ほとんど通り過ぎて)好きです。

できるだけエクステンションをclose-asciiにキャストしようとするとよいでしょう。

ü - > u

しかし、私の経験では、 実際の SEOに関連する問題の最大の問題は、URLにすべての美しいテキストが含まれているということではなく、リンクのテキストを変更すると、すべてのSEO作業が邪魔になります。インデックス。

このために、私は何を提案するは、定数のエンティティを参照し、完全にテキストの残りの部分を無視する(および/または間違っているときにそれを更新する)数値部分を持って、

また、ひどく地獄の性質は、人間による悪い使いやすさに過ぎません。 人間長いURLを嫌う 。 それらを貼り付けるコピーは吸うだけで、彼らは壊れやすくなります。 それをより低いteirsに細分することができれば、すなわち

/article/1/Some_Article_Title_Here
/article/1/Section/5/Section_Title_Here
/section/19023/Section_Title_here  ( == above link ) 

そうすれば、ブードゥーの魔法をする必要があるのは、番号付きの記事が実際削除されたときだけです。そのとき、テキスト部分を検索文字列として使用して、実際の記事などを見つけようとします。


誰かが興味がある場合。 これは私が取っているルート(うーん... punny)ルートです:

Route r = new Route("{country}/{lang}/Article/{id}/{title}/", new NFRouteHandler("OneArticle"));
Route r2 = new Route("{country}/{lang}/Section/{id}-{subid}/{title}/", new NFRouteHandler("ArticlesInSubcategory"));
Route r3 = new Route("{country}/{lang}/Section/{id}/{title}/", new NFRouteHandler("ArticlesByCategory"));

これは、私のようにURLを行うことができます:

  • site.com/ca/en/Article/123/my-life-and-health
  • site.com/ca/en/Section/12-3/Health-Issues
  • site.com/ca/ja/Section/12/

Webデザイナーではなく、クライアントユーザーとして、「違法」の文字を使用可能な文字に置き換えるときに、FirefoxがURLを破ることがあることがわかりました。 たとえば、FFは〜を%7Eに置き換えます。 それは決して私には負担にならない。 私はHTMLエディタとブラウザがなぜAZと0-9以外の文字を受け入れないことに同意しないのか理解できません。 特定のスクリプトに%、?などが必要な場合は、スクリプトアプリケーションを変更してアルファベットで動作させるようにしてください。





character