Назад | Перейти на главную страницу

как связать субдомен с папкой?

Я запускаю xampp, у которого есть Apache на Windows для сервера разработки. Мне нужно использовать поддомен localhost для доступа к моей папке localhost / images /, перейдя на h ## p: //images.localhost

Однако у меня возникли проблемы, я опубликовал изображение ниже, показывающее мою проблему.

Итак, вопрос в том, как настроить поддомен на Apache и заставить его работать для нужной мне папки?

Пожалуйста, просмотрите это изображение, извините, новые пользователи не могут опубликовать более 1 url и НИКАКИХ изображений, так что вот мой 1 url к важному изображению

http://www.freeimagehosting.net/uploads/b0194b8e68.jpg

ОБНОВЛЕННАЯ ВЕРСИЯ

My apache conf file

NameVirtualHost localhost:8080

<VirtualHost localhost:8080>
   ServerName localhost
   ServerAdmin blah@blah.com
   DocumentRoot c:\server\htdocs
</VirtualHost>

<VirtualHost images.localhost:8080>
   ServerName images.localhost
   ServerAdmin blah@blah.com
   DocumentRoot c:\server\htdocs\images
</VirtualHost>


My windows host file

127.0.0.1 images.localhost
127.0.0.1 *.localhost

Проблема, насколько я понимаю виртуальный хостинг Apache, в любом случае, заключается в том, что вы используете универсальную конфигурацию своих виртуальных хостов и используете общий DocumentRoot, а не явно определяете имя каждого VHost и DocumentRoot:

*: 8080 - это ваша базовая настройка NameVirtualHost.

Это перехватит все запросы к: 8080 и перенаправит все запросы на виртуальный хост, который соответствует директиве.

Это становится проблематичным, если у вас есть две директивы Vhost с одинаковыми именами, и одна из директив DocumentRoot совпадает с DocumentRoot сервера. Если нет «замещающего» DocumentRoot, который есть у сервера отдельно, то Apache будет оценивать DocumentRoot каждого виртуального хоста, находя «бритву Оккама» из значений, с которыми он сталкивается, если несколько виртуальных хостов имеют общий корневой путь.

В этом случае ... \ htdocs является DocumentRoot для обоих, потому что ... \ images содержится в пределах ... \ htdocs. Таким образом, любые запросы по умолчанию будут автоматически отправляться на Vhost, который предлагает только ... \ htdocs в качестве его DocumentRoot.

Я понимаю, что это немного сбивает с толку, поэтому, чтобы исправить это: переключитесь на виртуальный хостинг на основе имени.

ОБНОВЛЕНИЕ (2009-08-25)
Мне нужно кое-что уточнить, прежде чем мы продолжим:

Apache и другие веб-серверы никогда не слушают: по умолчанию 8080. Кроме того, веб-клиенты, такие как Firefox, по умолчанию никогда не запрашивают: 8080. Я предполагал, что вы поняли это из своего исходного сообщения, поскольку ваша директива VHost показала нестандартный порт: 8080. Я не уверен, что это было ясно.

Чтобы предыдущая редакция моего сообщения работала для вас в том виде, в каком она была настроена (без перенаправления порта 80 или чего-то еще), вам нужно будет указать порт при запросе страницы:

http: // локальный: 8080 и http: //images.localhost: 8080

Я должен был включить эту информацию. Как я уже сказал, я предположил, что это было ясно из вашего исходного сообщения. Мои извинения за это. Кроме того, я также предполагал, что вы настроили его таким образом, потому что другой сервер прослушивал порт 80. Если это правда, то вы можете рассмотреть возможность объединения двух серверов в одну установку или отключить альтернативный, пока вы работаете с xampp. .

Итак, давайте исправим директивы VHost для прослушивания порта 80, который является портом по умолчанию, с которого страницы обслуживаются и запрашиваются серверами и клиентами соответственно.

Я также собираюсь уделить особое внимание определению локализованных разрешений для папок, из которых вы обслуживаете данные, так как меня беспокоит, что существует директива /, которая ограничивает вашу способность получать страницы с ваших сайтов.

ОБНОВЛЕНО Директивы VirtualHost (25 августа 2009 г.):

NameVirtualHost localhost:80

<VirtualHost localhost:80>
   ServerName localhost

   # Naturally, this can be changed to a real email.
   ServerAdmin blah@blah.com

   # Set our DocRoot for the VHost.
   DocumentRoot c:\xampp\htdocs

   # Define access perms for our DocRoot.
   <Directory "c:\xampp\htdocs">
     # We're going to define Options, Override perms, and Allow directives.
     # FollowSymLinks probably doesn't work in Windows, but we'll keep it for posterity.
     Options Indexes MultiViews FollowSymLinks

     # Disallow Override
     AllowOverride None

     # Setup 1. Allow only *from* localhost. Comment out the following 3 lines, 
     # and uncomment Setup 2 below to allow access from all.
     Order deny,allow
     Deny from all
     Allow from 127.0.0.0/255.0.0.0

     # Setup 2. Allow all. Uncomment the following 2 lines, and comment out Setup 1.
     #Order allow,deny
     #Allow from all

   </Directory>
</VirtualHost>

<VirtualHost images.localhost:80>
   ServerName images.localhost

   # Naturally, this can be changed to a real email.
   ServerAdmin blah@blah.com

   # Set our DocRoot for the VHost.
   DocumentRoot c:\xampp\htdocs\images

   # Define access perms for our DocRoot.
   <Directory "c:\xampp\htdocs\images">
     # We're going to define Options, Override perms, and Allow directives.
     # FollowSymLinks probably doesn't work in Windows, but we'll keep it for posterity.
     Options Indexes MultiViews FollowSymLinks

     # Disallow Override
     AllowOverride None

     # Setup 1. Allow access only from localhost. Comment out the following 3 lines, 
     # and uncomment Setup 2 below.
     Order deny,allow
     Deny from all
     Allow from 127.0.0.0/255.0.0.0

     # Setup 2. Allow all. Uncomment the following 2 lines, and comment out Setup 1.
     #Order allow,deny
     #Allow from all

   </Directory>
</VirtualHost>

Apache будет сердиться на эту настройку, если нет соответствующего DNS-имени, которое он может найти для виртуального хоста, поэтому предыдущая рекомендация по изменению файла hosts системы остается верной. Обратите внимание, что при редактировании файла hosts вы можете поместить все псевдонимы для одного IP в одну строку, что избавит вас от некоторой путаницы.

127.0.0.1   localhost   images.localhost

Вы также можете использовать Vhosting на основе IP, но я бы не рекомендовал это. Это намного сложнее, чем то, что вы делаете, и «действительно» необходимо только тогда, когда вы имеете дело с несколькими vHosts, использующими SSL.

В любом случае, описанная мною установка работает точно так, как ожидалось в моей системе (Ubuntu 8.10 x86_64, Apache 2.2.9), а также должна нормально работать в вашей.

Я предполагаю, что ваша проблема пытается сделать поддомен «localhost». Лучше всего было бы изменить имена серверов на что-то вроде «localdomain.com» и «images.localdomain.com» (на самом деле подойдет что угодно), а затем изменить файл хостов, чтобы сопоставить этот домен с 127.0.0.1.

Прошло некоторое время с тех пор, как я использовал окна (извините), но я считаю, что файл hosts находится в c: \ windows \ system32 \ etc \ hosts

А формат поддельного домена будет примерно таким:

localdomain.com     127.0.0.1

Затем вам просто нужно отскочить от вашего сервера XAMPP, и все должно быть в порядке.

Надеюсь, это поможет :)

Конфигурация мне нравится. Проверьте наличие простых проблем, таких как перезапуск apache после изменения файла конфигурации и т. Д.

Как описано в RFC 2606 .localhost. лечится спец.

Но еще одна вещь, на которую стоит обратить внимание: какой у вас каталог по умолчанию? Возможно, ваши виртуальные настройки не работают должным образом. Но вместо этого DocumentRoot самого сервера всегда обрабатывает запросы.

Проблема в том, что «localhost» всегда разрешается в 127.0.0.1, но поддомены localhost, такие как ваш «images.localhost», не определены и, следовательно, не разрешаются. Вы можете исправить это локально, отредактировав файл hosts вашей системы (обычно в c: \ windows \ system32 \ drivers \ etc) и добавив следующую строку:

127.0.0.1 images.localhost

Вы также можете добавить:

127.0.0.1 *.localhost

После сохранения файла hosts ваши поддомены должны правильно разрешиться.

Редактировать: Я вижу, что у вас настроены vhosts для прослушивания порта 8080, но ваши URL-адреса не включают номер порта. Вам нужно перейти к адресам, в которых есть: 8080, например:

http://images.localhost:8080/layout/homepage/welcome_image.jpg

Кроме того, вы можете изменить vhosts для прослушивания: 80.

Я предполагаю, что причина, по которой работает только localhost, заключается в том, что ваша основная конфигурация Apache Listen 127.0.0.1 и DocumentRoot c:\xampp\htdocs.

Я даже попытался использовать настоящее доменное имя в моем файле hosts, и мой компьютер просто отключился, пытаясь его загрузить.

Возможно, у вас проблемы с разрешением имен. Вы можете попробовать выполнить команду ping images.localhost из командной строки (Пуск -> Выполнить -> «cmd»)

Если этот поддомен не работает, возможно, вы можете попробовать с настоящим. Моя последняя статья может помочь: 42foo: все виртуальные хосты, необходимые для вашей веб-разработки

У меня это работает с некоторыми доменами, хотя я связываю их все с одним и тем же корнем документа:

<VirtualHost *:80>
        DocumentRoot /srv/apps/mydomain/current/public
        ServerName mydomain.com
        ServerAlias www.mydomain.com
</VirtualHost>

<VirtualHost *:80>
        DocumentRoot /srv/apps/mydomain/current/public
        ServerName assets0.mydomain.com
        ServerAlias assets1.mydomain.com
        ServerAlias assets2.mydomain.com
        ServerAlias assets3.mydomain.com
</VirtualHost>