Подстановочные субдомены

Если вы хотите, чтобы hitTest для вида прокрутки распознавал жесты за пределами вида прокрутки, вам необходимо преобразовать координату в систему координат текущего вида:

class CustomScrollView: UIScrollView {
    var referenceView: UIView?   // if you leave this `nil`, it will assume `superview`

    override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
        let view = referenceView ?? superview!

        let frame = convert(view.bounds, from: view)
        return frame.contains(point) ? self : nil
    }
}

Кстати, это прекрасно работает на устройстве, но странно ведет себя на симуляторе, поэтому используйте на свой страх и риск.

Но ниже я прокручивал, делая жесты в серой области, за пределами вида прокрутки:

enter image description here

18
задан beaudeal 17 September 2008 в 05:12
поделиться

5 ответов

До, как настроить подстановочный знак субдомена DNS, который был бы функцией Вашего поставщика услуг хостинга DNS. Это было бы различными шагами, в зависимости от которого поставщика услуг хостинга Вы имеете и были бы лучшим вопросом для них.

, После того как Вы настроили это с хостом DNS из Вашего веб-приложения, Вы действительно - просто перезапись URL, которая может быть сделана со своего рода модулем для самого веб-сервера, такого как isapi, переписывают, если бы Вы находитесь на IIS (это было бы предпочтенным маршрутом если возможный). Вы могли также обработать перезапись на прикладном уровне также (как использование маршрутизации если на ASP.NET).

Вы переписали бы URL так , http://myname.domain.com станет http://domain.com/something.aspx?name=myname или что-то. Оттуда на, Вы просто обрабатываете его, как будто значение myname было в строке запроса как нормальная. Это имеет смысл? Надежда я не неправильно понял то, что Вы после.

Редактирование:

я не предлагаю, чтобы Вы создали субдомен для каждого пользователя, но вместо этого создали подстановочный субдомен для самого домена, таким образом что-либо .domain.com (в основном *.domain.com) переходит к Вашему сайту. У меня есть несколько установок доменов с mydomain. Их инструкции для установки этого похожи на это:

Да, можно настроить подстановочный знак, но он будет только работать при установке его как Запись. Подстановочные знаки не работают с Именем C. Для использования подстановочного знака Вы используете astericks символ '* '. Например, если Вы создадите и Запись с помощью подстановочного знака, .domain.com, что-нибудь, что вводится в место, где' ' расположен, то решит к указанному IP-адресу. Таким образом, при вводе 'www', 'ftp', 'сайта' или чего-либо еще перед доменным именем, это будет всегда решать к IP-адресу

, у меня есть некоторые, которые являются установкой просто этим способом, имение *.domain.com переходит к моему сайту. Я затем могу считать базовый URL в своем веб-приложении, чтобы видеть, что ryan.domain.com - то, к чему в настоящее время получали доступ, или что bill.domain.com - то, что использовалось. Я могу затем также:

  1. перезапись URL Использования так, чтобы субдомен стал частью строки запроса ИЛИ
  2. Просто, считала значение хоста из URL, к которому получают доступ, и выполняет некоторую логику на основе того значения.

, который имеет смысл? У меня есть несколько сайтов, созданных просто этим точным способом: создайте подстановочный знак для домена с хостом DNS и затем просто считайте хост или основывайте домен от URL для решения, что отобразиться на основе субдомена (который был на самом деле именем пользователя)

Редактирование 2:

нет никакого способа сделать это без записи DNS. "Мир онлайн" должен знать, что name1.domain.com, name2.domain.com,...,nameN.domain.com все переходят к IP-адресу для Вашего сервера. Единственный способ сделать это с соответствующей записью DNS. Необходимо добавить подстановочный знак запись DNS для домена с хостом DNS. Затем это - просто вопрос Вас читающий субдомен из URL и принимающий соответствующие меры в Вашем коде.

16
ответ дан 30 November 2019 в 07:04
поделиться

Лучшая вещь сделать, если Вы работаете *AMP, состоит в том, чтобы сделать то, что предлагает Thomas, и сделайте виртуальные хосты в Apache. Можно сделать это или с или без перенаправления, которое Вы описываете.

Виртуальные хосты

Наиболее вероятный Вы захотите сделать основанные на имени виртуальные хосты , поскольку это является самым легким настроить и только требует одного IP-адреса (так также будет легко настроить и протестировать на Вашей локальной машине MAMP). Основанные на IP виртуальные хосты лучше в некоторых других отношениях, но у Вас должен быть IP-адрес для каждого домена.

страница This Wikipedia обсуждает различия и ссылки на хороший основной обход - через того, как сделать основанный на имени vhosts внизу.

На Вашей локальной машине для тестирования, необходимо будет также настроить поддельные имена DNS в/etc/hosts для поддельных тестовых доменных имен. т.е. если бы Вы имеете Apache, слушающий на localhost, и настраиваете vhost1.test.domain и vhost2.test.domain в Ваших конфигурациях Apache, Вы просто добавили бы эти домены к 127.0.0.1 строкам в/etc/hosts, после localhost:

127.0.0.1 localhost vhost1.test.domain vhost2.test.domain

, После того как Вы сделали редактирование/etc/hosts и добавили основанные на имени виртуальные конфигурации хоста к Вашему конфигурационному файлу (файлам) Apache, вот именно, Apache перезапуска и Ваши тестовые домены должны работать.

Перенаправление с mod_rewrite

, Если Вы хотите сделать перенаправления с mod_rewrite (так, чтобы user.example.com не был непосредственно размещен и вместо этого перенаправил на example.com/user), затем необходимо будет также сделать RewriteCond, чтобы соответствовать субдомену и перенаправить его:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^subdomain\.example\.com
RewriteRule ^(.*)$ http://example.com/subdomain$1 [R]

можно поместить это в .htaccess или в основную конфигурацию Apache.

необходимо будет добавить пару правил как последние два для каждого субдомена, который Вы хотите перенаправить. Или, Вы можете получать субдомен в RewriteCond, чтобы смочь использовать одно подстановочное правило перенаправить *.example.com на example.com/ * - но это действительно плохо пахнет мне с точки зрения безопасности.

Все вместе, vhosts и перенаправление

лучше быть более явным и настроить виртуальный раздел конфигурации хоста для каждого имени хоста, к которому Вы хотите прислушаться, и поместить переписать правила для каждых из этих имен хостов в его виртуальной конфигурации хоста. (Это всегда более безопасно и быстрее для помещения этого вида материала в конфигурации Apache и не .htaccess, если можно помочь ему - .htaccess, замедляет производительность, потому что Apache постоянно обыскивает файловую систему для .htaccess файлов и повторно анализирует их, и это менее безопасно, потому что они могут быть завинчены пользователями.)

Все вместе как этот, конфигурация vhost в Ваших конфигурациях Apache была бы:

NameVirtualHost 127.0.0.1:80

# Your "default" configuration must go first
<VirtualHost 127.0.0.1:80>
  ServerName example.com
  ServerAlias www.example.com
  DocumentRoot /www/siteroot
  # etc.
</VirtualHost>

# First subdomain you want to redirect
<VirtualHost 127.0.0.1:80>
  ServerName vhost1.example.com
  RewriteEngine On
  RewriteRule ^(.*)$ http://example.com/vhost1$1 [R]
</VirtualHost>

# Second subdomain you want to redirect
<VirtualHost 127.0.0.1:80>
  ServerName vhost2.example.com
  RewriteEngine On
  RewriteRule ^(.*)$ http://example.com/vhost2$1 [R]
</VirtualHost>
13
ответ дан 30 November 2019 в 07:04
поделиться

Из того, что я видел на многих webhosts, они устанавливают виртуальный хост на апаче.

Поэтому, если Ваш www.mysite.com вручен от/var/www, Вы могли бы создать папку для каждого пользователя. Затем отобразите виртуальный хост той папки.

С этим, и работы mysite.com/user и user.mysite.com.

Что касается Вашей тестовой среды, если бы Вы находитесь на окнах, я предложил бы редактировать Ваш Файл hosts для отображения mysite.com на локальный ПК (127.0.0.1), а также любых субдоменов, которые Вы настраиваете для тестирования.

0
ответ дан 30 November 2019 в 07:04
поделиться

Первый, я хочу позволить пользователям публиковать страницы и давать им каждого субдомен их выбора (исключая: user.mysite.com). Из того, что я могу собраться, лучший способ сделать, это должно отобразить user.mysite.com на mysite.com/user с mod_rewrite и .htaccess - который корректен?

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

синтаксис проходит примерно так:

<VirtualHost *:80>
    DocumentRoot /var/www/user
    ServerName user.mysite.com
    ...
</VirtualHost>
0
ответ дан 30 November 2019 в 07:04
поделиться

Мне пришлось сделать то же самое для одного из моих сайтов. Вы можете выполнить следующие шаги

  1. Если у вас на сервере cPanel, создайте субдомен * , в противном случае вам придется настроить запись A в вашем DNS (для BIND см. http://ma.tt/2003/10/wildcard-dns-and-sub-domains/ ). На вашем dev. сервер, вам будет гораздо лучше подделать поддомены, добавив каждый из них в свой файл hosts .

  2. (Если вы использовали cPanel, вам не придется этого делать). Вам нужно будет добавить что-то вроде следующего в ваш файл apache vhosts. Это во многом зависит от того, какой тип сервера (общий или нет) вы используете. СЛЕДУЮЩИЙ КОД НЕ ЗАВЕРШЕН. ПРОСТО ДАЙТЕ НАПРАВЛЕНИЕ. ПРИМЕЧАНИЕ. ServerAlias ​​example.com * .example.com имеет важное значение.

     
    DocumentRoot / var / www /
    ServerName example.com
    ServerAlias ​​example.com * .example.com
    
    
  3. Затем, поскольку вы можете использовать сценарий PHP для проверки заголовка «Host» и определения поддомена и соответствующего обслуживания содержимого.

1
ответ дан 30 November 2019 в 07:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: