2010-04-08 69 views
3

我是新来的,对我来说如此光秃秃的。我刚刚配置了Apache和PHP以在我的本地Mac OS X计算机上工作。现在PHP工作正常,除了当我尝试加载我的活网站的文件。活网站有单独的目录,并按客户名称排序等。Apache本地配置正确解析文件

我已经在本地Web服务器文档的默认根目录中创建了符号链接。我的问题是,Apache似乎不想加载任何HTML页面中找到的相对路径。例如,我有src =“/ css/main.css”,但Apache不加载文件,类似于图像,它只是解析为文件未找到404错误。然后我认为它可能是符号链接,因此我将完整目录复制到Apache文档根目录,并且仍然具有相同的结果。

我真的很想安装我的本地开发环境来运行Apache,PHP,MySQL在本地开发,然后在准备就绪时发布。我也尝试过MAMP安装,并且遇到同样的问题。

任何在这方面的帮助将不胜感激。如果我的解释不明确,请告诉我。

谢谢! Alex。

回答

1

你试过src =“css/main.css”吗?也就是说,没有主导斜线?如果你有一个前导斜杠,那么你的文件必须位于Web服务器根目录下的一个名为css的目录中,如果我正确地理解了你,那不是这种情况。

编辑:好的,从阅读你的评论看来,你似乎不清楚相关网址如何工作。 “/css/main.css”与目录树中的页面位置不相关。它意味着一个名为“main.css”的文件位于Web服务器根目录中名为“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

那么我的问题是,我想在本地Web服务器的文件,以及实时Web服务器上的文件是相同的。也就是说,我想在我的本地文件中进行更改,保存,在本地进行测试,然后从那里进行发布。我通常添加/css/main.css,因为我创建了单独的头文件,这些头文件在不同文件夹中通过网站导入。 也许有一种方法来告诉Apache以填补缺口?像/ path_to_document_root/css/main/css? 谢谢! – 2010-04-08 22:51:23

+2

也许一个更好的问题是,为什么/css/main.css现场Web服务器上正常工作,但不是我的地方吗? – 2010-04-08 22:54:10

2

首先,您可能想尝试使用src =“./ css/main.css”。

当处理多个活动站点时,我喜欢用apache为每个站点设置一个配置文件,然后将它们一起加载到httpd.conf文件中。

我的设置,它看起来是这样的:

在 的/ etc/apache2的/ httpd的。CONF

我:

# 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

我的设置去甚至更进一步,因为我设置的服务器了。无论何时我想更新,我都加载web文件和apache配置文件,这样服务器就完全反映了我的本地设置。唯一的区别是,真正的judyates.com指向服务器而不是我的家用计算机,所以当人们尝试访问网站时,他们会从服务器获取所有内容。