MVC3 выдает ошибку «Страница не найдена», когда часть маршрута содержит точку остановки - PullRequest
0 голосов
/ 21 октября 2011

Я создал сайт на основе каталогов в ASP.NET MVC3, который, когда вы переходите по сайту, вы попадаете на страницу типа http://server/domains/details/mydomain.coop.

Остальная часть сайта работает нормально, однако, когда вы переходите по этой ссылке, вы получаете страницу не найдена. Я поставил вход в контроллеры, и действие в контроллере не запускается. Он прекрасно работает на моей локальной машине (VS2010 / W7), но когда он установлен на живых серверах (MS 2003 server IIS6), он ломается.

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

У кого-нибудь есть идеи, что я могу сделать, так как я действительно хочу "." в части идентификатора для SEO

Большое спасибо

Jonathan

Ответы [ 2 ]

1 голос
/ 21 октября 2011

Точки и другие знаки пунктуации имеют очень специфическое значение в URL-адресах - в данном случае это указывает расширение файла, которое используется для определения того, какие модули и фильтры IIS (я всегда путаю эти два) активируются для обработки запроса.

Вы должны действительно дважды подумать о форматировании ваших URL таким образом; такие нестандартные применения не твои друзья.

Гипотеза: Возможно, что поисковая система может использовать часть после ., чтобы определить тип MIME, и либо набрать оценку, если она не соответствует фактическому содержанию страницы, либо она может полностью игнорировать ссылку. Обратите внимание, что, например, Google индексирует изображения и страницы по-разному в зависимости от расширения файла и типа MIME (хотя кто-то, кто более разбирается в темной магии внутренних компонентов Google, может дать лучшее / более точное объяснение.)

Вот хороший пост о том, как заставить ASP.NET игнорировать определенные расширения файлов,

См. Также этот вопрос о подобной проблеме (регистрация пользовательских расширений файлов - в данном случае .coop)

Важные web.config записи по второй ссылке:

<httpHandlers> 
... 
<add verb="*" path="*.mycustomextension"> type="System.Web.UI.PageHandlerFactory"/> 

<compilation > 
      <buildProviders> 
          <add extension=".mycustomextension" type="System.Web.Compilation.PageBuildProvider" />  
      </buildProviders> 

У меня не было времени проверить это, но, надеюсь, это поможет вам двигаться в правильном направлении.

1 голос
/ 21 октября 2011

Вы можете использовать -, чтобы ваш URL был похож на http://server/domains/details/mydomain-coop.Я не уверен в последствиях SEO, но я не могу представить, что он лучше или хуже, чем .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...