make the url unlimited

时间:2017-05-18 作者:ẪĦmẻḓ MøĦẫmẻḓ

我希望在wordpress中长时间不受限制,无字符限制

我使用插件wordpress seo

当我尝试将url设置为

https://sitename.com/برمجة-تصميم-موقع-مركز-رفع-تحميل-تطبيق-تطبيقات-ايفون-اندرويد/它只能显示

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

只有39个字符可以作为url

那么,我们如何编辑这个问题,它有问题与谷歌的长url或其确定?

等待回答和建议

3 个回复
SO网友:Tom J Nowell

你可能认为它有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%AD%D9%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%D8%A7%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/

<但是那些不是阿拉伯字符There\'s no such thing as a true Arabic 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%AD%D9%85%D9%8A%D9%84-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82-%D8%AA/

每个百分比,例如。%D8, 表示非英语字符的代码。这相当于百分比编码之前的UTF-8。浏览器通过在其UI中显示解码的字符来隐藏这一点,以便您可以读取它,而不是显示它真正使用的丑陋的百分比编码版本。

那么URL的最大长度是多少

规范没有给出最大值,但软件可能会设置限制。如果是,则会有一个HTTP代码表明URL太长。

但是WordPress呢?

弹尾最大长度是多少

这将由posts表中列的大小决定。在撰写本文时post_name 列为varchar(200), 限制为200个字符。

阿拉伯文和国际邮递名称将比书写的长度长,因此将长度乘以3,得出a maximum of 66 characters

我可以增加这个数字吗

是。。。是的,但是at great risk. 您可以使用SQL手动将列大小从200增加到更高的值,但在更新WordPress和执行其他表操作时,WordPress可能会在升级期间将列大小调整回200个字符。这将截断并中断所有的post段塞和URL。

只有在每次更新和安全修复都能轻松修改WordPress Core时,才可以这样做。无法保证WordPress会使用额外的空间。如果你打算沿着这条路线走下去,那将是昂贵的、耗时的,而且很容易中断。

这会影响我的搜索引擎优化吗

不,谷歌等知道这一点,并妥善处理。但如果它确实损害了你的搜索引擎优化,那么其他所有阿拉伯语网站也会受到同样的伤害。

WordPress SEO将统计编码版本的字符,而不是人类可读的解码版本,因此请忽略它并向插件作者提交错误报告

备选方案

在未来版本的WordPress中,您可以支持这张试图将最大值从200提高到400的罚单:

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

SO网友:fuxia

插件报告的问题不存在。正如Tom指出的,URL包含更多内容bytes 超过39个字符,但不超过个字符。

域名后的部分是encoded in UTF-8, 每个搜索引擎都知道如何处理这个问题。这就是为什么当有人搜索你的可见URL中的单词时,你会被找到。Punycode 用于使用非ASCII字符对域名进行编码。那根本不会影响你。

忽略插件“警告”。这是插件中一个bug的结果,因为它是在计算字节,而不是字符。

SO网友:Jafar Abazeed

尝试将这些行添加到主题中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( \'&nbsp;\', \'&#160;\', \'&ndash;\', \'&#8211;\', \'&mdash;\', \'&#8212;\' ), \'-\', $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.

结束

相关推荐