Если я правильно понимаю, тебе нужно что-то подобное? https://stackblitz.com/edit/angularjs-52l5k7
Если вы хотите повторно использовать вашу модель ng, вам следует использовать ng-bind для привязки данных. https://docs.angularjs.org/api/ng/directive/ngBind
Я сам предпочитаю _ - по причинам удобочитаемости (Вы помещаете подчеркивание на него и _
фактически go_away), если Вы собираетесь разделить пробелы.
Можно хотеть попытаться бросить расширенные символы, т.е., ü, к ASCII завершения equivelants, если это возможно, т.е.:
ü-> u
Однако, по моему опыту, самая большая проблема с Фактическими связанными с SEO проблемами, не то, что URL содержит весь прекрасный текст, что, когда люди изменяют текст в ссылке, вся Ваша работа SEO обращается к дерьму, потому что у Вас теперь есть DEADLINKS в индексах.
Для этого я предложил бы то, что stackoverflow делают и имеют числовую часть, которая ссылается на постоянный объект, и полностью проигнорируйте остальную часть текста (и/или обновите его когда его несправедливость),
Кроме того, чрезвычайно hericichial природа просто делает для плохого удобства использования людьми. Люди ненавидят длинные URL. Копия, вставляющая их, сосет, и они просто более подвержены повреждению. Если можно подразделить его на более низкий их, т.е.
/article/1/Some_Article_Title_Here
/article/1/Section/5/Section_Title_Here
/section/19023/Section_Title_here ( == above link )
Тем путем единственное время, необходимо сделать волшебство вуду, - когда пронумерованная статья на самом деле была удалена, в котором времени Вы используете текстовую часть, поскольку строка поиска для попытки находит реальную статью или что-то как он.
Мой последний подход:
Что касается устройства хранения данных, я полагаю, что дружественный URL должен перейти к базе данных, и быть неизменным, в конце концов, охладиться, URIs не изменяются
Решением 2 является типичный подход тех... некоторые улучшения являются возможными, например, превращающими апострофами ни во что вместо тире для удобочитаемости. Обычно Вы захотите сохранить munged-for-URL-validity версию заголовка в базе данных, а также 'реального' заголовка, таким образом, можно будет выбрать объект с помощью индексируемого ВЫБОРА ГДЕ.
Как бы то ни было. Нет никакого фактического запрещенного символа в части пути URL, пока Вы кодируете ее соответственно. Например, пространство, хеш или наклонная черта могут быть закодированы как %20, %23 или %2F. Таким образом, возможно закодировать любую строку в часть URL, таким образом, можно ВЫБРАТЬ его назад из базы данных фактическим, неизменным заголовком.
Существует несколько потенциальных проблем с этим в зависимости от Вашей веб-платформы все же. Например, что-либо на основе CGI будет не мочь сказать различие между закодированным %2F и реальным/, и некоторые платформы/развертывание могут испытать трудности с символами Unicode.
С другой стороны, простое и безопасное решение состоит в том, чтобы включать первичный ключ в URL, с помощью названных частей просто для того, чтобы сделать адрес более хорошим. например:
http://www.example.com/x/category-name/subcat-name/article-name/348254863
Это - то, как, например, Amazon делает это. Это действительно имеет преимущество, что можно изменить заголовок в базе данных и иметь URL со старым перенаправлением заголовка автоматически к новому.
При очистке URL вот метод, который я использую для замены символов с диакритикой:
private static string anglicized(this string urlpart) {
string before = "àÀâÂäÄáÁéÉèÈêÊëËìÌîÎïÏòÒôÔöÖùÙûÛüÜçÇ’ñ";
string after = "aAaAaAaAeEeEeEeEiIiIiIoOoOoOuUuUuUcC'n";
string cleaned = urlpart;
for (int i = 0; i < avantConversion.Length; i++ ) {
cleaned = Regex.Replace(urlpart, before[i].ToString(), after[i].ToString());
}
return cleaned;
// Here's some for Spanish : ÁÉÍÑÓÚÜ¡¿áéíñóúü"
}
Не знайте, является ли это самый эффективный Regex, но это, конечно, эффективно. Это - дополнительный метод так для вызова его, Вы просто помещаете метод в Статический Класс и делаете что-то как это:
string articleTitle = "My Article about café and the letters àâäá";
string cleaned = articleTitle.anglicized();
// replace spaces with dashes
cleaned = Regex.Replace( cleaned, "[^A-Za-z0-9- ]", "");
// strip all illegal characters like punctuation
cleaned = Regex.Replace( cleaned, " +", "-").ToLower();
// returns "my-article-about-cafe-and-the-letters-aaaa"
Конечно, Вы могли объединить его в один метод под названием "CleanUrl" или что-то, но Вам решать
Как продолжение. У меня действительно есть некоторые идеи. Поэтому не стесняйтесь комментировать идеи или давать Ваш собственный ответ на вопрос:
Решение № 1: Замените все запрещенные символы тире:
Это выглядит немного ужасным мне...
Решение № 2: Разделите запрещенные символы и замените пробелы единственными тире:
Решение № 3 Примените несколько правил заменить определенные символы словами:
Решение № 4 Разделите Все Пробелы и используйте Капитализацию
(Может не работать хорошо над чувствительными к регистру серверами и тверд читать),
В случае, если любому интересно. Это - маршрут (oooh... остроумный), я беру:
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 как так:
Решением 2 была бы моя рекомендация. Я не крупнейший в мире эксперт по SEO, но я полагаю, что это - в значительной степени 'стандартный' способ получить хорошие рейтинги так или иначе.
Что я делаю обычно должен позволять только допустимый символ и сохранять дружественный URL максимально коротким. Также важный то, что дружественные URL часто вставляются человеком, я никогда не генерирую дружественный URL из заголовка или содержания, и затем использую то для запросов базы данных. Я использовал бы столбец в таблице, например, friendly_url, так, чтобы администратор веб-сайта мог вставить дружественные URL.
Я решил эту проблему путем добавления дополнительного столбца в базе данных (например: UrlTitle вместе со столбцом Title), и сохранение заголовка лишило всех запрещенных символов с '&' символы, замененные 'и', и пробелы, замененные символами нижнего подчеркивания. Затем Вы можете поиск через UrlTitle и использовать реальный в названии страницы или везде, где.
Я предлагаю делать то, что Wordpress делает - полоса, небольшие слова и replce запрещенные символы с тире (макс. 1 тире) затем позволяют пользователю исправить URL, если они хотят. Это лучше, чтобы SEO сделала URL настраивающимся.
As a client user, not a Web designer, I find Firefox sometimes breaks the URL when it tries to replace "illegal" characters with usable ones. For example, FF replaces ~ with %7E. That never loads for me. I can't understand why the HTML editors and browsers don't simply agree not to accept characters other than A-Z and 0-9. If certain scripts need %, ?, and such, change the scripting applications so they will work with alpha numeric.