Переписывание URL-адресов в ASP.NET?
Я использую ASP.NET С#.
Как реализовать процедуру повторной записи URL-адресов, похожую на StackOverflow.com?
http://stackoverflow.com/info/358630/how-to-search-date-in-sql
Кроме того, каково значение таких значений, как "358630" в URL-адресе? Является ли это идентификатором вопроса (основой для которого они используются для извлечения данных из таблицы)? Как бы то ни было, в моем приложении я идентифицирую записи, используя поле "ID". Это поле является столбцом идентификации в таблице SQL. Сейчас мои URL-адреса выглядят следующим образом:
http://myweb.com/showdetails.aspx?id=9872
Но я бы хотел, чтобы они выглядели следующим образом:
http://myweb.com/showdetails/9872/my_question_title
Или:
http://myweb.com/9872/my_question_title
Или любой лучший способ, который будет приятным для поиска ботов.
Мое приложение размещено на Go Daddy для совместного использования хостинга, и я чувствую, что не настроен "HTTP-модуль" ASP.NET или нет настроенных DLL для перезаписи URL-адресов работает на своем сервере. Я попробовал много образцов, но пока не удался!
Я обнаружил, что Qaru размещен на Go Daddy (общий хостинг?). Может быть, метод Qaru будет работать для меня.
Ответы
Ответ 1
SO использует ASP.NET MVC. Вам действительно нужно подробно прочитать, как работает переписывание URL MVC, но суть в том, что часть "вопросов" в URL-адресе - это имя класса Controller (что примерно соответствует "showdetails" в вашем URL-адресе) и number - это параметр ID для действия по умолчанию на этом контроллере (то же, что и параметр "id" в вашем URL-адресе).
Ответ 2
Поскольку MVC не является вариантом, вы можете попробовать перенаправить 404s. Это будет работать в ASP.NET 1.1 и выше: перенаправить 404 и 405 на свой собственный обработчик, используя либо конфигурацию IIS, либо web.config, проанализировать запрос в обработчике и перенаправить на соответствующий ресурс.
<configuration>
<system.web>
<customErrors mode="On" defaultRedirect="error.html">
<error statusCode="404" redirect="newHandler.aspx"/>
</customErrors>
</system.web>
</configuration>
Ответ 3
До появления System.Web.Routing обычной практикой было использование UrlRewriter.NET. Работала достаточно хорошо, но могла укусить вас при настройке IIS. Я не уверен, есть ли какие-либо простые способы использования новых классов маршрутизации в ASP.NET(т.е. Отбросить его и перейти против кода рефакторинга).
Ответ 4
пожалуйста, объясните значение значений например, "358630" в URL
Это (предположительно) идентификатор для вопроса в базе данных. В модели MVC
myurl.com/questions/358630
аналогично
myurl.com/questions.aspx?id=358630
Заголовок вопроса в конце URL-адреса фактически игнорируется приложением. Он обычно "прикрепил" к поисковой оптимизации и удобочитаемости человека. Фактически, вы можете изменить название этого вопроса в URL-адресе и заметить, что страница по-прежнему загружается просто отлично.
Ответ 5
Новая dll System.Web.Routing входит в состав ASP.NET 3.5 SP1 и bin развертывается на ASP.NET 3.5, поэтому вы можете использовать функции этого на классическом сайте ASP.NET WebForms.
Вероятно, вы захотите принять к сведению комментарии Phil Haack в своем сообщении при использовании MVC на IIS 6, поскольку вам, вероятно, понадобится для включения расширения .aspx в ваших маршрутизированных URL
http://www.mysite.com/controler.aspx/action/id
Вы также можете проверить вопросы с тегами SEO.
Имя игнорируемого вопроса в конце URL-адреса часто называют "Slug" и используется для целей SEO, чтобы включить заголовок страницы в URL-адрес.