web-dev-qa-db-ja.com

uRLを無制限にする

私は無制限のwordpressで無制限に欲しい

私はプラグインのワードプレスのSEOを使用

uRLを作ってみると

https://sitename.com/برمجة-تصميم-ممقع-مركز-رفع-تطبيق-تطبيق-تطبيقات-ايفون-اندرويد/ 表示できるある

https://sitename.com/برمجة-تصميم-ممقع-مركز-رفع-تحميل-تطبيق-ت/

たった39文字でそれをURLにすることができます

それでは、どのように私たちはこの問題を編集することができ、それは長いURLのためのグーグルまたはそれの問題を抱えている?

答えとアドバイスを待っています

39文字の長さだと思うかもしれませんが、実際には332文字です。

これはあなたが使おうとしている本当のURLです:

https://sitename.com/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%AA%D8%B5%D9%85 %D9%8A%D9%85%D9%85%D9%88%D9%82%D8%B9-%D9%85%D8%B1%D9%83%D8%B2-%D8%B1%D9% 81%D8%B9%D8%AA%D8%AD9%85%D9%8A%D9%84%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8 %AA%D8%B7%D8%A8%D9%8A%D9%82%D7%D8%AA-%D8%A7%D9%8A%D9%81%D9%88%D9%86-%D8 %A7%D9%86%D8%AF%D8%B1%D9%88%D9%8A%D8%AF /

しかし、それらはアラビア文字ではありませんか。

本当のアラビア語のURLのようなものはありません。 HTTP要求はUnicodeを使用せず、有効なURLを決定するRFCにはラテン文字以外の文字は含まれません。

では、国際URLはどのように機能するのでしょうか。

エンコーディング!各文字のUTF値はパーセントエンコードされているため、ラテン文字セットに収まります。ブラウザはこれを内部的に使用しますが、アドレスバーとツールチップに変換します。

それであなたのURLはあなたにこのように見えるかもしれません:

https://sitename.com/برمجة-تصميم-ممقع-مركز-رفع-تحميل-تطبيق-ت/

しかし実際には、

https://sitename.com/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%AA%D8%B5%D9%85 %D9%8A%D9%85%D9%85%D9%88%D9%82%D8%B9-%D9%85%D8%B1%D9%83%D8%B2-%D8%B1%D9% 81%D8%B9%D8%AA%D8%AD9%85%D9%8A%D9%84%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8 %AA /

各パーセント、例えば%D8は、英語以外の文字のコードを表します。これはパーセントエンコードの前のUTF-8と同等です。ブラウザは、実際に使用している醜いパーセントエンコードバージョンを表示するのではなく、読むことができるようにデコードされた文字をUIに表示することによってこれを隠します。

では、URLの最大長は?

仕様は最大値を与えませんが、ソフトウェアは制限を置くかもしれません。もしそうなら、URLが長すぎることを示すHTTPコードがあります。

しかし、WordPressはどうですか?

ポストスラッグの最大長は?

これは、投稿テーブルの列のサイズによって決まります。これを書いている時点では、post_name列はvarchar(200)なので、制限は200文字になります。

アラビア語および国際的な役職名は書かれているものよりも長くなるので、長さに3を掛けると、最大66文字になります

この数を増やすことはできますか?

はい、そうですが、大きなリスクがあります。 SQLを使用して列サイズを手動で200からそれ以上の値に増やすことができますが、WordPressを更新したり他のテーブル操作を行ったりする場合、アップグレード中にWordPressが列のサイズを200文字に戻すことがあります。これにより、投稿のスラッグとURLがすべて切り捨てられて破損します。

あなたがすべてのアップデートとセキュリティ修正のためにWordPressコアを修正するのに快適であるならば、これをするだけです。 WordPressが余分なスペースを使用することさえ保証されていません。あなたがこの道をたどるつもりなら、それは高価で、時間がかかり、そして破るのはとても簡単でしょう。

これは私のSEOを傷つけますか?

いいえ、Googleなどはこれについて知っていて、それをうまく処理します。しかし、それがあなたのSEOを傷つけたのであれば、それは他のすべてのアラビア語サイトを傷つけることになるでしょう。

WordPress SEOは、人間が読める形式のデコードされたバージョンではなく、エンコードされたバージョンの文字数をカウントするので、それを無視してプラグイン作成者にバグレポートを提出してください。

代替案

あなたはWordPressの将来のバージョンで200から400に最大を増やそうとしているこのチケットをバックアップすることができます:

https://core.trac.wordpress.org/ticket/10483

4
Tom J Nowell

プラグインが報告している問題は存在しません。 Tomが指摘したように、URLには39を超えるバイトが含まれていますが、それ以上の文字は含まれていません。

ドメイン名の後の部分は UTF-8 でエンコードされており、どの検索エンジンもそれを処理する方法を知っています。それが、あなたのvisible/の一部であるWordを誰かが検索しているときに見つけられる理由です。 Punycodeは、ドメイン名を非ASCII文字でエンコードするために使用されます。それはあなたに全く影響を与えません。

プラグインの「警告」を無視してください。これは、そのプラグインのバグの結果です。なぜなら、それは文字数ではなくバイト数を数えているからです。

1
fuxia

これらの行をテーマのfunctions.phpファイルに追加してみてください:

// First of all lets remove standard hook
remove_filter('sanitize_title', 'sanitize_title_with_dashes');

// Add our custom hook for sanitize_title method
add_filter('sanitize_title', 'custom_sanitize_title_with_dashes', 10, 3);

/**
  * Sanitizes a title, replacing whitespace and a few other characters with dashes.
  *
  * Limits the output to alphanumeric characters, underscore (_) and dash (-).
  * Whitespace becomes a dash.
  *
  * @since 1.2.0
  *
  * @param string $title The title to be sanitized.
  * @param string $raw_title Optional. Not used.
  * @param string $context Optional. The operation for which the string is sanitized.
  * @return string The sanitized title.
  */

function custom_sanitize_title_with_dashes($title, $raw_title = '', $context = 'display') {
  $title = strip_tags($title);

  // Preserve escaped octets.
  $title = preg_replace('|%([a-fA-F0-9][a-fA-F0-9])|', '---$1---', $title);

  // Remove percent signs that are not part of an octet.
  $title = str_replace('%', '', $title);

  // Restore octets.
  $title = preg_replace('|---([a-fA-F0-9][a-fA-F0-9])---|', '%$1', $title);

  if (seems_utf8($title)) {
    if (function_exists('mb_strtolower')) {
      $title = mb_strtolower($title, 'UTF-8');
    }
    $title = utf8_uri_encode($title, 3000);
  }

  $title = strtolower($title);

  if ( 'save' == $context ) {
    // Convert nbsp, ndash and mdash to hyphens
    $title = str_replace( array( '%c2%a0', '%e2%80%93', '%e2%80%94' ), '-', $title );

    // Convert nbsp, ndash and mdash HTML entities to hyphens
    $title = str_replace( array( ' ', ' ', '–', '–', '—', '—' ), '-', $title );

    // Convert forward slash to hyphen
    $title = str_replace( '/', '-', $title );

    // Strip these characters entirely
    $title = str_replace( array(

      // iexcl and iquest
      '%c2%a1', '%c2%bf',

      // angle quotes
      '%c2%ab', '%c2%bb', '%e2%80%b9', '%e2%80%ba',

      // curly quotes

      '%e2%80%98', '%e2%80%99', '%e2%80%9c', '%e2%80%9d',
      '%e2%80%9a', '%e2%80%9b', '%e2%80%9e', '%e2%80%9f',

      // copy, reg, deg, hellip and trade
      '%c2%a9', '%c2%ae', '%c2%b0', '%e2%80%a6', '%e2%84%a2',

      // acute accents
      '%c2%b4', '%cb%8a', '%cc%81', '%cd%81',

      // Grave accent, macron, caron
      '%cc%80', '%cc%84', '%cc%8c',
    ), '', $title );

    // Convert times to x
    $title = str_replace( '%c3%97', 'x', $title );
  }

  $title = preg_replace('/&.+?;/', '', $title); // kill entities
  $title = str_replace('.', '-', $title);
  $title = preg_replace('/[^%a-z0-9 _-]/', '', $title);
  $title = preg_replace('/\s+/', '-', $title);
  $title = preg_replace('|-+|', '-', $title);
  $title = trim($title, '-');

  return $title;
}

または、このプラグインを試してください: Longer Permalinks

0
Jafar Abazeed