Подтвердить что ты не робот

Переписывание 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 будет работать для меня.

4b9b3361

Ответ 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-адрес.