gpt4 book ai didi

c# - 在 SEO Clean Uri 中删除的字符

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:29:55 25 4
gpt4 key购买 nike

我正在使用 asp.net/C#,我希望为我正在创建的小型 CMS 系统创建唯一的(?)uris。

我从我的文章标题生成 uri 片段,例如,如果标题是“我的精彩文章”,则 uri 将是 www.website.com/news/my-amazing-article

这有两个部分。首先,你认为我需要删除哪些字符?我正在用“-”替换空格,我想我也应该去掉“/”字符。你能想到更多可能导致问题的地方吗? “?”也许?我应该删除所有非字母字符吗?

第二个问题,上面我提到了 uris 可能需要是唯一的。我打算在添加之前检查 uri 列表以确保唯一性,但是我看到堆栈溢出使用数字加上 uri。我假设这允许重复标题?你认为这是更好的方法吗?

最佳答案

将所有变音符号转换为它们的基本字符,然后使用 Char.IsLetterOrDigit 去除任何不是字母或数字的内容。

然后用一个破折号替换所有空格。

这就是我们在软件中使用的内容。

/// <summary>
/// Convert a name into a string that can be appended to a Uri.
/// </summary>
private static string EscapeName(string name)
{
if (!string.IsNullOrEmpty(name))
{
name = NormalizeString(name);

// Replaces all non-alphanumeric character by a space
StringBuilder builder = new StringBuilder();
for (int i = 0; i < name.Length; i++)
{
builder.Append(char.IsLetterOrDigit(name[i]) ? name[i] : ' ');
}

name = builder.ToString();

// Replace multiple spaces into a single dash
name = Regex.Replace(name, @"[ ]{1,}", @"-", RegexOptions.None);
}

return name;
}

/// <summary>
/// Strips the value from any non english character by replacing thoses with their english equivalent.
/// </summary>
/// <param name="value">The string to normalize.</param>
/// <returns>A string where all characters are part of the basic english ANSI encoding.</returns>
/// <seealso cref="http://stackoverflow.com/questions/249087/how-do-i-remove-diacritics-accents-from-a-string-in-net"/>
private static string NormalizeString(string value)
{
string normalizedFormD = value.Normalize(NormalizationForm.FormD);
StringBuilder builder = new StringBuilder();

for (int i = 0; i < normalizedFormD.Length; i++)
{
UnicodeCategory uc = CharUnicodeInfo.GetUnicodeCategory(normalizedFormD[i]);
if (uc != UnicodeCategory.NonSpacingMark)
{
builder.Append(normalizedFormD[i]);
}
}

return builder.ToString().Normalize(NormalizationForm.FormC);
}

关于使用那些生成的名称作为唯一 ID,我会反对。使用生成的名称作为 SEO 助手,但不作为 key 解析器。如果你看看 stackoverflow 如何引用他们的页面:

http://stackoverflow.com/questions/249087/how-do-i-remove-diacritics-accents-from-a-string-in-net
^--ID ^--Unneeded name but helpful for bookmarks and SEO

您可以在那里找到 ID。这两个 URL 指向同一个页面:

http://stackoverflow.com/questions/249087/how-do-i-remove-diacritics-accents-from-a-string-in-net

http://stackoverflow.com/questions/249087/

关于c# - 在 SEO Clean Uri 中删除的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2095957/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com