Запретить главной странице автоматическое исправление или корректировку URL - PullRequest
0 голосов
/ 24 февраля 2010

Как я могу остановить мастер-страницу от автокоррекции или корректировки моих URL? Я использую карту сайта, и когда главная страница находится в другом каталоге, она портит ее URL.

Редактировать Я не хочу делать это глобально, я хочу сделать это на отдельной главной странице.

Редактировать 2 У меня нет доступа к URL. Они генерируются картой сайта.

Редактировать 3 Когда моя главная страница находится в \browsers\iphone\. URL, сгенерированный для ссылок, \browsers\iphone\contact-us.aspx. Когда карта сайта привязана к меню, значение является правильным.

1 Ответ

1 голос
/ 24 февраля 2010

URL-адреса на главной странице должны относиться к корню или использовать подход tilde-slash ~/, чтобы указать путь от корня сайта.

Если ваша главная страница - /App_Master/MyMaster.master, и у вас есть несколько ссылок на нее, убедитесь, что они имеют вид:

<link rel="Stylesheet" type="text/css" href="/Path/From/The/Root.css" />
<script type="text/javascript" src="/Path/From/The/Root.js" ></script>

<a href="/Path/From/TheRoot.html">A non server-side link should start in forward slash and provide entire path</a>

<asp:HyperLink ID="MyHyperLink" runat="server" NavigateUrl="~/Path/to/Page.aspx" Text="Use the tilde-slash and use path from site-root"/>

Вместо таких вещей, как:

<link rel="Stylesheet" type="text/css" href="../SomeRelative/Path.css" />
<script type="text/javascript" src="Path/Not/From/The/Root.js" ></script>

EDIT:

Как вы храните свою карту сайта? Стандартный формат .net XML Sitemap? Ваши URL в карте сайта всегда должны ссылаться на пути из корня, используя тильды, такие как ~/My/Path.aspx

РЕДАКТИРОВАТЬ 2:

Спасибо за уточнение источника данных и формата.

Причина проблемы заключается в том, что URL-адреса, хранящиеся в источнике данных карты сайта (в данном случае SQL Server), не являются путями, основанными на корне сайта. Это стандартная практика для файлов сайтов asp.net хранить URL-адреса как ~/mypage.aspx, а не mypage.aspx. Это не зависит от выбранного формата хранения (xml или база данных SQL и т. Д.)

Я бы по-прежнему рекомендовал обновить URL-адреса в вашей базе данных с помощью корня с помощью ~/mypath.aspx. Это стандартная практика. На самом деле нет причин изменять функциональность класса мастер-страницы, чтобы не разрешать URL-адреса.

Помните, по натуре традиционные html-лакомства:

  • относительный URL mypage.aspx как в той же папке
  • относительный URL ../mypage.aspx как одна папка вверх
  • URL /mypage.aspx от корня

ASP.NET основывается на этом с одной дополнительной нотацией:

  • URL ~/mypage.aspx от корня

с использованием URL contact-us.aspx должно строить из текущей страницы по своей природе, поскольку так работают даже стандартные пути HTML src и href. Если вы поместите ваш sitemapdatasource и меню на простую страницу, вложенную в папку, и забудете об использовании главной страницы, вы обнаружите, что проблема все еще сохраняется.

Извините, что спорю, но я просто не вижу смысла в изменении основной функциональности создания URL-адресов в Интернете, когда URL-адреса в источнике данных не соответствуют простому формату ~/path/to/some/file.aspx.

Возможно, кто-то еще может вмешаться, если я что-то упустил ...

...