Как обратиться к основному домену без жесткого кодирования его имени?

У меня есть доменное имя: TestSite.com. Я создаю несколько поддоменов для этого сайта и называю их first.TestSite.com, second.TestSite.com и т. Д.

Как мне обратиться к TestSite.comотносительно без необходимости жестко кодировать его имя в html или aspx файле на first.TestSite.com? Что я имею в виду (используя папки в качестве примера), если у меня сначала есть папка TestSite и подпапка

Тестовый сайт / первый

то сначала я могу обратиться к его родительской папке TestSite:

../

Что я использую для ссылки на TestSite.com от first.TestSite.com? Благодарю.

 cgTag27 дек. 2012 г., 19:52
@BrianWhite - это правильный SSL. Кроме того, SSL будет работать только с одним IP-адресом (с Apache). Таким образом, даже если бы у вас были деньги, чтобы купить SSL-сертификаты для каждого субдомена, они должны были бы иметь свои собственные IP-адреса. Что может быть невозможно в зависимости от ограничений вашего интернет-провайдера.
 Brian White27 дек. 2012 г., 14:58
Субдомены могут также вызвать проблемы для поисковых систем и рейтинга, если это имеет значение для вашего случая.
 Brian White27 дек. 2012 г., 14:56
Папки - это вложенная иерархия. Субдомены не являются. Субдомены могут создавать проблемы для javascript, cookie и ssl сертификатов. Это может даже создать проблемы для таких вещей, как кэширование изображений. Является ли blank.gif из first.testsite.com тем же изображением, что и blank.gif из testsite.com? Это не для браузера.

Ответы на вопрос(4)

Решение Вопроса

раммировать это как манипулирование строкой.

Что-то вроде:

var host = location.host;
var lastPeriod = host.lastIndexOf(".");
var remainder = host.substring(0, lastPeriod);
var afterSecondLastPeriod = remainder.lastIndexOf('.') + 1
var baseDomain = host.substring(afterSecondLastPeriod);
console.log(baseDomain);

РЕДАКТИРОВАТЬ: более короткая версия с использованием регулярных выражений:

var baseDomain = host.match(/[^.]*\.[^.]*$/)[0]

Это общее, поэтому всегда будет возвращаться последняя часть. Независимо от того,a.TestSite.com, b.a.TestSite.comи т. д. он вернетсяTestSite.com.

Вам придется изменить его, если это предположение неверно.

ующего сервера, но указать его в своей среде разработки.

Вы можете переопределить DNS-запросы в Windows, добавив строки в этот файл.

C: \ Windows \ System32 \ Drivers \ Etc \ хостов

Добавьте следующее с помощью текстового редактора.

127.0.0.1   www.livesite.com
127.0.0.1   first.livesite.com
127.0.0.1   second.livesite.com

Эти домены теперь будут отображаться на locahost. Так что не нужно будет взламывать HTML для тестирования.

 Brian White28 дек. 2012 г., 23:32
Будете ли вы обнаруживать какие-либо проблемы между сайтами, кэшированием или ssl-сертификатами, которые возникнут в prod в dev в вышеописанной настройке? @ Мэтью, я говорю не о разных сайтах, а о разных частях одного и того же сайта, которые просто получают разные названия
 cgTag27 дек. 2012 г., 19:48
@BrianWhite большинство веб-разработчиков используют хосты для указания нескольких доменов на свой локальный хост. В противном случае невозможно работать более чем на одном веб-сайте. Так как только один сайт может быть настроен на работу с локального хоста. Что я делаю, так это изменяю .com на .local для всех моих сайтов. Пример; www.thinkingmedia.ca становится www.thinkingmedia.local на моей машине разработчика. В настоящее время у меня более 50 локальных сайтов, работающих без проблем. Извините, у вас возникли проблемы, но если вы начнете новый вопрос о проблемах. Я был бы рад помочь.
 Brian White27 дек. 2012 г., 14:52
Предупреждение: указание нескольких доменов на 127.0.0.1 всегда вызывает у меня проблемы странным образом. Это никогда не было простым решением сложной проблемы, с которой я столкнулся. Я пробовал это во многих различных ситуациях и всегда заканчивал тем, что возвращал это.
 Ilmari Karonen27 дек. 2012 г., 19:07
@Brian: нет ничего плохого в AFAIK с указанием нескольких имен хостов на 127.0.0.1, даже больше, чем с указанием нескольких имен хостов на любой другой IP-адрес. Это, однако, означает, что вам нужно настроить веб-сервер разработки на виртуальный хостинг на основе имен (если вы нехотеть все ваши разработки сайтов выглядят одинаково).

я собираюсь предположить, что вы хотите сделать это на стороне сервера, поэтому вы не полагаетесь на JavaScript на стороне клиента для создания ссылок HTML.

Прежде всего, убедитесь, что у вас есть файл web.config на ваших сайтах поддоменов, и добавьте его в конфигурацию:

<configuration>
  <appSettings>
    <add name="MainDomain" value="example.com" /> 
  </appSettings>
</configuration>

Используя этот параметр на страницах ASPX, гиперссылки на страницах одного из ваших поддоменов будут выглядеть следующим образом:

<a href="<%$ AppSettings: MainDomain %>">Go to main domain home page</a>
<a href="<%$ AppSettings: MainDomain %>/products.aspx">Go to products page on the main domain</a>

Настройка сname="MainDomain" будет прочитан из файла конфигурации и вставлен на страницу, где написано<%$ AppSettings: MainDomain %>, Таким образом, вы создаете необходимый HTML-код на стороне сервера, не требуя жесткого кодирования.

Если вам нужно изменить имя, просто обновите файл конфигурации, и все страницы будут автоматически использовать новое доменное имя.

base элемент.

Атрибут [href] базового элемента указывает абсолютный URI, который действует как базовый URI для разрешения относительных URI.

Итак, добавьтеbase элемент, укажитеhref вы хотите, и все относительные URI на странице теперь используют URI, который вы указали в качествебаза URI.

<head>
    <base href="http://testsite.com" />
</head>

Это все, что вам нужно. Однако, если вы хотите сделать вещи немного чище, вы можете извлечь этот URI из файла web.config, используяSystem.Configuration.<a href="http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.aspx" rel="nofollow">ConfigurationManager</a>.<a href="https://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.appsettings(v=vs.110).aspx" rel="nofollow">AppSettings</a>, Вот фрагмент кода aspx:

<head>
    <base href="<%= ConfigurationManager.AppSettings["rootdomain"] %>" />
</head>

И web.config:

<configuration>
  <appSettings>
    <add name="rootdomain" value="http://testsite.com" /> 
  </appSettings>
</configuration>

Этот метод позволяет влиять на многие элементы изодин и его значение можно узнать из web.config.

Ваш ответ на вопрос