Переписывать URL в ASP.NET?

Я использую ASP.NET C #.

Как реализовать процедуру перезаписи URL, аналогичную StackOverflow.com?

http://stackoverflow.com/questions/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. Я пробовал много образцов, но пока не повезло!

Я обнаружил, что Stack Overflow размещается на Go Daddy (виртуальный хостинг?). Возможно, метод Stack Overflow подойдет мне.

6.02.2009 17:40:40
Не уверен, почему за это проголосовали. Похоже, законный вопрос для меня.
Spencer Ruport 6.02.2009 17:44:33
Да, это совершенно законный вопрос.
BobbyShaftoe 6.02.2009 17:45:48
ездить на даунотерс. Sheesh. У них нет шаров, чтобы сказать ПОЧЕМУ.
user1228 6.02.2009 17:46:23
Я предполагаю, что какой-то парень 1337 года с отношением RTFM обиделся, что Прашант не слышал о ASP.NET MVC. :-)
Franci Penov 6.02.2009 17:46:44
«Вкусы хороши для поиска ботов». Любить это.
Tom 6.02.2009 18:18:44
5 ОТВЕТОВ
РЕШЕНИЕ

ТАК использует ASP.NET MVC . Вы действительно должны прочитать подробно, как работает перезапись URL MVC, но суть в том, что часть 'questions' в URL - это имя класса Controller (что примерно соответствует 'showdetails' в вашем URL) и число - это параметр ID для действия по умолчанию на этом контроллере (аналогично параметру 'id' в вашем URL).

12
6.02.2009 17:44:46
Я использую ASP.NET 2.0 (C #). Могу ли я использовать ASP.NET MVC для разработки своих приложений? Или мне требуется ASP.NET 3.x + для использования ASP.NET MVC?
Prashant 6.02.2009 17:56:07
Получил ответ, он будет работать только с версиями ASP.NET 3.x + :( microsoft.com/downloads/…
Prashant 6.02.2009 18:00:54
На самом деле, вы должны проверить с вашим хостингом. Большинство компаний, которые предлагают .Net 2.0 с пакетом обновления 1 (SP1), также обычно предлагают и .Net 3.5, видя, что CLR одинаков, а последний только добавляет больше классов в платформу.
Franci Penov 6.02.2009 18:53:53

До появления System.Web.Routing распространенной практикой было использование UrlRewriter.NET . Работал достаточно хорошо, но мог укусить вас при настройке IIS. Я не уверен, есть ли какие-либо простые способы использования новых классов маршрутизации в ASP.NET (то есть, добавьте их и идите против рефакторинга кода).

2
6.02.2009 17:45:25
Я не могу использовать это, потому что UrlRewriter.NET требует установки в IIS, и поскольку я нахожусь на виртуальном хостинге, поэтому я не имею права делать это: ((
Prashant 6.02.2009 18:10:52
Это очень плохо ... Некоторые провайдеры виртуального хостинга предлагают его в качестве опции; Вы можете проверить с ними.
user1228 9.02.2009 11:33:37

Поскольку MVC не вариант, вы можете попробовать перенаправить 404-е. Это будет работать в ASP.NET 1.1 и выше: перенаправьте 404 и 405 на свой собственный обработчик, используя IIS config или web.config, проанализируйте запрос в обработчике и перенаправьте на соответствующий ресурс.

<configuration>
   <system.web>
    <customErrors mode="On" defaultRedirect="error.html">
        <error statusCode="404" redirect="newHandler.aspx"/>
    </customErrors>       
   </system.web>
</configuration>
3
6.02.2009 18:44:21
Чувак, это хакерский способ сделать это ... нет никаких побочных эффектов от этого?
Lloyd Cotten 6.02.2009 19:07:44
Используется для небольших сайтов в классическом ASP, например.
Sciolist 6.02.2009 19:14:39
Прочитайте требования. Вкусы хороши для поисковых систем, поддерживаются ASP.NET 2.0 и работают на виртуальном хостинге. У вас есть менее "хакерское" решение, которое соответствует требованиям?
xcud 6.02.2009 19:29:29
Я не уверен, что это будет хорошо для поисковых систем - разве IIS не вернет статус 404?
Dominic Rodger 5.05.2009 10:39:09

пожалуйста, объясните значение таких значений, как "358630" в URL

Это (предположительно) идентификатор вопроса в базе данных. В модели MVC

 myurl.com/questions/358630

аналогично

myurl.com/questions.aspx?id=358630

Название вопроса в конце URL фактически игнорируется приложением. Как правило, он «привязан» к поисковой оптимизации и удобочитаемости. На самом деле, вы можете изменить заголовок этого вопроса в URL и заметить, что страница по-прежнему загружается просто отлично.

2
6.02.2009 18:59:38
Да, но с «ID» я понимаю, что если я увеличу +1 в этом stackoverflow.com/questions/521310/… url, тогда должен открыться следующий вопрос с изменением другой части url ...
Prashant 6.02.2009 19:02:18
Но он пересылает меня на этот stackoverflow.com/questions/521298/when-to-use-struct-in-c/… URL, как StackOverflow поддерживает это ???
Prashant 6.02.2009 19:02:57
Я могу только строить догадки, но, возможно, в некоторых случаях они перенаправляют на более канонический ответ. Так, например, когда вы вводите идентификатор 521311, он перенаправляется на 521298. Таким образом, вы можете предположить, что 521298 - лучший ответ для структур в C #.
Cory House 6.02.2009 20:51:46
Возможно, вопросы и ответы (и, возможно, комментарии) хранятся в одной и той же таблице, с некоторыми столбцами дискриминатора для определения типа / родителя и т. Д. - я вижу, что ответ, на который ссылается +1 к идентификатору, был оставлен около в то же время, что и ваш вопрос.
Zhaph - Ben Duguid 6.02.2009 22:35:57
В CMS довольно распространено хранить весь контент в одной таблице, поэтому я не понимаю, почему SO не делает то же самое.
Zhaph - Ben Duguid 6.02.2009 22:36:54

Новый dll System.Web.Routing является частью ASP.NET 3.5 с пакетом обновления 1 (SP1) и может быть развернут в bin на ASP.NET 3.5 , поэтому вы можете использовать его возможности на классическом сайте ASP.NET WebForms .

Возможно, вы захотите принять к сведению комментарии Фила Хаака в его посте об использовании MVC на IIS 6, так как вам, вероятно, потребуется включить расширение .aspx в маршрутизируемые URL-адреса.

http://www.mysite.com/controler.aspx/action/id

Вы также можете проверить вопросы с тегами SEO .

Имя игнорируемого вопроса в конце URL-адреса часто называют «Slug» и используется в целях SEO для включения заголовка страницы в URL-адрес.

1
23.05.2017 10:29:51