2010-04-08 3 views
3

Я новичок в этом, так голый со мной. Я только что настроил Apache и PHP для работы на моем локальном компьютере Mac OS X. Теперь PHP работает отлично, за исключением случаев, когда я пытаюсь загрузить файлы для своих живых сайтов. Живые сайты имеют отдельные каталоги и сортируются по имени клиента и т. Д.Локальная конфигурация Apache для правильной обработки файлов

Я создал символические ссылки в корне по умолчанию для локальных документов веб-сервера. Моя проблема в том, что Apache, похоже, не хочет загружать какие-либо из относительных путей, которые находятся на страницах HTML. Например, у меня есть src = "/ css/main.css", но Apache не загружает файл, аналогично для изображений, он просто решает, как файл не найден 404 ошибка. Затем я подумал, что это могут быть символические ссылки, поэтому я скопировал полный каталог в корень документа Apache и все еще имел тот же результат.

Мне очень хотелось бы настроить локальную среду разработки для запуска Apache, PHP, MySQL, чтобы развить локально, а затем опубликовать, когда будете готовы. Я также попробовал установку MAMP и имел те же проблемы.

Любая помощь вообще в этом была бы весьма признательна. Если мои объяснения не ясны, сообщите мне.

Спасибо! Alex.

ответ

1

Вы пробовали src = "css/main.css"? То есть без ведущей косой черты? Если у вас есть ведущая косая черта, ваши файлы должны быть в каталоге с именем css, который был в корневом каталоге веб-сервера, и если я правильно вас понимаю, это не так.

EDIT: ОК, прочитав свои комментарии, кажется, что вы не совсем поняли, как работают относительные URL-адреса. «/css/main.css» не относится к местоположению страницы в дереве каталогов. Это означает, что файл «main.css» находится в каталоге с именем «css» в корневом каталоге веб-сервера. Когда вы размещаете свои файлы на сервере развертывания, ваш каталог css - в корневом каталоге веб-сервера. Но похоже, что вы в настоящее время помещаете каталог css в подкаталог, названный для клиента ... так что ваш файл css теперь живет в «/clientname/css/main.css».

Если я правильно вас понимаю, вы можете делать то, что хотите, используя относительные URL-адреса. Если ваш html-файл находится в том же каталоге, что и каталог css, вам понадобится «css/main.css». Если он находится в подкаталоге каталога, содержащего каталог css, вам понадобится «../css/main.css» - «..» означает родительский каталог текущего каталога. Если вы используете относительные URL-адреса, они будут продолжать работать до тех пор, пока связь между файлами не изменится.

Вот страница по теме, которая объясняет это адекватно, я думаю: http://www.webreference.com/html/tutorial2/3.html. В первую очередь это было первое, что я нашел в Google, так что, скорее всего, есть объяснения.

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

+0

Ну, моя проблема в том, что я хочу, чтобы файлы локального веб-сервера и файлы в реальном времени были одинаковыми. То есть, я хотел бы просто внести изменения в свои локальные файлы, сохранить, протестировать локально, а затем опубликовать оттуда. Обычно я добавляю /css/main.css, потому что я создаю отдельные файлы заголовков, которые импортируются по всему сайту в разных папках. Возможно, есть способ сказать Apache заполнить пробел? например/path_to_document_root/css/main/css? Спасибо! –

+2

Возможно, лучший вопрос: почему /css/main.css работает правильно на реальном веб-сервере, но не на моем локальном? –

2

Сначала вы можете попробовать использовать src = "./ css/main.css".

Когда вы работаете с несколькими живыми сайтами, мне нравится настраивать один файл конфигурации для каждого сайта с помощью apache, а затем загружать их все вместе в файл httpd.conf.

для моей установки это выглядит следующим образом:

в /и т.д./apache2/HTTPD.конф

У меня есть:

# Begin virtual host directives. 

Include conf/bortreb.conf 

Include conf/rlmcintyre.conf 

Include conf/laserkard.conf 

Include conf/judyates.conf 

, а затем в /etc/apache2/conf/judyates.conf

У меня есть:

<VirtualHost *:80> 
    #localhost site 

    ServerAdmin [email protected] 
    DocumentRoot "/home/r/Desktop/web/judyates" 
    ServerName localhost 
    ServerAlias judyates.localhost 
    ErrorLog "/home/r/Desktop/web/judyates/log/error_log.log" 
    ScriptAlias /cgi-bin/ "/home/r/Desktop/web/judyates/cgi-bin/" 

    <Directory "/home/r/Desktop/web/judyates"> 
     Options Indexes FollowSymLinks 
     Options +ExecCGI 
     AddHandler cgi-script cgi pl py 
     AllowOverride Options 
     Order allow,deny 
     Allow from all 
    </Directory> 

    </VirtualHost> 


    <VirtualHost *:80> 

    #live site 
    ServerAdmin [email protected] 
    DocumentRoot "/home/r/Desktop/web/judyates" 
    ServerName judyates.com 
    ServerAlias *.judyates.com 
    ErrorLog "/home/r/Desktop/web/judyates/log/error_log.log" 
    ScriptAlias /cgi-bin/ "/home/r/Desktop/web/judyates/cgi-bin/" 


    <Directory "/home/r/Desktop/web/judyates"> 
     Options Indexes FollowSymLinks 
     Options +ExecCGI 
     AddHandler cgi-script cgi pl py 
     AllowOverride Options 
     Order allow,deny 
     Allow from all 

    </Directory> 

    </VirtualHost> 

Этот способ работает очень хорошо, потому что вы можете настроить субдомен yoursite.localhost для возврата к домашнему IP-адресу.

С этой настройкой, когда я работаю на judyates.com на своем компьютере и хочу протестировать anythig, я просто перехожу к judyates.localhost в свой веб-браузер.

У меня есть еще 5 других сайтов, которые настроены таким образом в своем собственном файле * .conf, поэтому каждый из них может жить в своих собственных каталогах на моем компьютере, которые точно соответствуют каталогам, которые они будут на сервере.

Ключом является использование виртуальных хостов для перехода на разные сайты на основе субдомена.

Вы можете узнать, как настроить поддомены, указывающие на себя здесь: http://digitalpbk.blogspot.com/2007/01/making-subdomains-on-localhost.html

Моя установка идет еще один шаг вперед, потому что настройки I сервер тоже. Всякий раз, когда я хочу обновлять, я загружаю файлы веб-файлов и файлы конфигурации apache, и таким образом сервер точно отражает мою локальную настройку. Единственное различие заключается в том, что настоящий judyates.com указывает на сервер, а не на мой домашний компьютер, поэтому, когда люди пытаются посетить сайт, они получают все с сервера.

 Смежные вопросы

  • Нет связанных вопросов^_^