Как создать удобные для пользователя URL-адреса, например stackoverflow?

Я хочу создать URL-адрес, подобный типу переполнения стека при создании вопроса.

Пример:

GET / POST без использования ajax с использованием jQuery (плагин?) без использования ajax-get-post-using-jquery- плагин

Меня особенно интересует последняя часть, которую я выделил жирным шрифтом. Как добиться эффекта добавления заголовка страницы к URL-адресу с разделителем?

Как называется эта техника?


person Cunners    schedule 20.07.2009    source источник
comment
Сначала вы вводите строку в нижнем регистре ... затем добавляете тире ... затем объединяете ее с URL-адресом ...   -  person jrockway    schedule 20.07.2009
comment
FWIW, Stack Overflow игнорирует этот текст: stackoverflow.com/questions/1149454/   -  person jrockway    schedule 20.07.2009
comment
Да, это просто хороший SEO. Вам действительно нужен только идентификационный номер.   -  person AndyMcKenna    schedule 20.07.2009


Ответы (7)


По возможности используйте маршрутизацию ASP.NET вместо перезаписи. Он доступен как в MVC, так и в веб-формах. Маршрутизация намного более гибкая и лучше справляется с передачей контекста в код обработки, обработкой обратных передач и т. Д.

Для обработки переписывание на уровне веб-сервера перед выполнением кода ASP.NET. Есть полезная информация о том, как это сделать здесь.

person Jon Galloway    schedule 20.07.2009
comment
Маршрутизация ASP.NET не будет работать с IIS6 по умолчанию, верно? Насколько я знаю, это потребует работы: какое-то отображение подстановочных знаков или переопределение URL-адресов! +1 за хороший ответ. - person Galilyou; 20.07.2009
comment
И IIS5, и IIS6 должны быть настроены с сопоставлением подстановочных знаков для незарегистрированных расширений (включая отсутствие расширения) - person Richard Szalay; 20.07.2009

Перезапись URL-адресов для SO обеспечивается механизмом маршрутизации в ASP.NET MVC.

person AndyMcKenna    schedule 20.07.2009

Этот метод называется «перезапись URL». Вы пометили вопрос с помощью asp.net, поэтому MSDN может помочь вам в этом: http://msdn.microsoft.com/en-us/library/ms972974.aspx

person Ahmet Kakıcı    schedule 20.07.2009

Stackoverflow запрограммирован в ASP.Net MVC, а маршрутизация URL-адресов является стандартной частью пакета в MVC. Помимо маршрутизации URL-адресов, он предлагает еще много преимуществ. Поэтому, если вы создаете новый веб-сайт и хотите воспользоваться преимуществами URL-маршрутизации среди других преимуществ, попробуйте сделать это в MVC.

Однако будьте осторожны, вам придется многому научиться.

person Cyril Gupta    schedule 20.07.2009

Как называется эта техника?

Как уже говорили другие, этот метод называется маршрутизацией. По сути, он берет ваш красиво отформатированный URL-адрес и сопоставляет его с некоторым действием контроллера. И согласно ответу IIS 7 Джона Галлоуэя эта функция интегрирована. Для предыдущих версий IIS вам, вероятно, придется настроить отображение приложения с подстановочными знаками в среду выполнения ASP.NET и, возможно, добавить свой собственный HttpModule в конвейер запросов вашего приложения для обработки маршрутизации, если выбранная вами веб-платформа не предоставляет средства маршрутизации.

Как добиться эффекта добавления заголовка страницы к URL-адресу с разделителем?

Этого можно добиться, заключив заголовок в нижний регистр и заменив не буквенно-цифровые символы дефисами. Иногда этот бит называют пробкой. Вероятно, вы также захотите уменьшить длину заголовка, чтобы не столкнуться с Проблемы с ограничением длины URL. У вас также есть возможность сгенерировать слаг в паре мест:

  • Когда заголовок отправлен, сохраните слаг с остальными данными страницы.
  • Или сгенерируйте его на лету, когда вы создаете страницы, которые ссылаются на страницу с заголовком.

Имейте в виду, что для поиска данных страницы не следует использовать ярлыки, для этого и нужен идентификатор страницы; слизняк должен быть необязательным. Ваши правила маршрутизации будут просто заботиться о том, чтобы получить идентификатор из URL-адреса и передать его правильному действию контроллера, игнорируя все, что происходит после. Другими словами, единственная важная часть - это идентификатор вопроса. Слизняк - это просто сахар. :)

person Jonathon Watney    schedule 20.07.2009

Хотя маршрутизация здесь явно лучший вариант, есть способы подделать ее с минимальными усилиями. Например, вот простой способ получить удобные URL-адреса и немного SEO:
Предположим, у вас есть страница:

example.aspx

Следующий URL будет работать даже без каких-либо действий:

example.aspx/some-friendly-text

Вы также можете комбинировать данные запроса:

example.aspx?id=1
example.aspx/some-friendly-text?id=1

При желании вы можете получить доступ к этому тексту с помощью запроса. PathInfo свойство.

person Kobi    schedule 20.07.2009

Не забывайте, что с этим типом маршрутизации люди могут ссылаться на вашу страницу с текстом, который вы, возможно, предпочли бы им не использовать.

Я довольно часто видел это в британских газетах - они публикуют статью с URL-адресом типа

газетаdoman.co.uk/articles/1128945/dog-bites-man

а затем кто-то свяжется с ним как

газетаdoman.co.uk/articles/1128945/newspaper-in-crap-story-shocker

или что-то еще.

person Vicky    schedule 20.07.2009