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

Поддомен для изображений не работает. В чем проблема?

Я работаю над хостингом изображений imgur clone. Я создал поддомен для своих изображений i.localhost добавлен в файл hosts -> 127.0.0.1 i.localhost добавлен в httpd-vhosts.conf ->

<VirtualHost *:80>
   DocumentRoot "/Users/BillGates/Sites/images/"
   ServerName i.localhost
</VirtualHost>

Мой сайт работает на моем локальном компьютере по адресу localhost. Посетитель может увидеть изображение по URL-адресу, например localhost / NE2bd, я сделал этот URL-адрес с помощью Mod_Rewrite, поэтому все похоже на imgur.com

Поскольку я храню все свои изображения в / Users / BillGates / Sites / images /, я не вижу изображения в i.localhost / NE2bd.jpeg !!!! Но образ находится в папке изображений !!

Я получаю сообщение "Не найдено"

Запрошенный URL /NE2bd.jpeg не найден на этом сервере. Мой httpd-vhosts.conf

#
# Virtual Hosts
#
# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at 
# <URL:http://httpd.apache.org/docs/2.2/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.

#
# Use name-based virtual hosting.
#
NameVirtualHost *:80

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/usr/docs/dummy-host.example.com"
    ServerName dummy-host.example.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "/private/var/log/apache2/dummy-host.example.com-error_log"
    CustomLog "/private/var/log/apache2/dummy-host.example.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/usr/docs/dummy-host2.example.com"
    ServerName dummy-host2.example.com
    ErrorLog "/private/var/log/apache2/dummy-host2.example.com-error_log"
    CustomLog "/private/var/log/apache2/dummy-host2.example.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
   DocumentRoot "/Users/BillGates/Sites/images/"
   ServerName i.localhost
</VirtualHost>

И, конечно, несколько важных строк в httpd.conf

DocumentRoot "/Users/BillGates/Sites"

Ваша конфигурация выглядит неверной. Я привык объявлять vhost как

<VirtualHost *:80>
ServerAdmin webmaster@host.foo.com
DocumentRoot /www/docs/host.foo.com
ServerName host.foo.com
</VirtualHost>

в файле, который включается в ваш httpd.conf.

Я не уверен, что ваша конфигурация вообще используется Apache, потому что ваш "localhost" -vhost не существует в вашей конфигурации.

Попробуйте добавить домены «foo.bar» и «i.foo.bar» в ваш / etc / hosts и указать им свой IP. Затем напишите директиву VirtualHost для каждого из них с разными DocumentRoot.

После этого попробуйте добраться до файлов, расположенных в каталогах с вашим (под) доменом, и опубликовать ошибки (и конфиги).

Похоже, вы используете Apache 2 в OSX и редактируете файл. /etc/apache2/extra/httpd-vhosts.conf. Часть кода, который вы скопировали и вставили, кажется, отсутствует <VirtualHost *:80>

Возможно, конфигурация, которую вы добавили, не считывается в конфигурацию apache. По умолчанию этот файл не читается. Вы можете попробовать отредактировать основной /etc/apache2/httpd.conf чтобы включить этот файл.

Попробуйте раскомментировать строку:

Include /private/etc/apache2/extra/httpd-vhosts.conf.

И, конечно же, не забудьте запустить и остановить apache, чтобы он вступил в силу.