我刚刚将Apache和PHP配置为在我的本地Mac OS X计算机上运行。现在PHP工作正常,除非我尝试加载我的实时网站的文件。实时站点具有单独的目录,并按客户端名称等排序。
我在本地Web服务器文档的默认根目录中创建了符号链接。我的问题是Apache似乎不想加载HTML页面中找到的任何相对路径。例如,我有src =“/ css / main.css”,但Apache没有加载文件,类似于图像,它只是解析为找不到404错误的文件。然后我认为它可能是符号链接,因此我将完整目录复制到Apache文档根目录中,并且仍然具有相同的结果。
我真的很想设置我的本地开发环境来运行Apache,PHP,MySQL在本地开发然后在准备好时发布。我也尝试了MAMP安装,并遇到了同样的问题。
答案 0 :(得分: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@example.com
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@example.com
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指向服务器而不是我的家用计算机,因此当人们尝试访问该网站时,他们从服务器获取所有内容。
答案 1 :(得分:1)
你试过src =“css / main.css”吗?也就是说,没有领先的斜线?如果你有一个前导斜杠,那么你的文件必须位于网络服务器根目录下名为css的目录中,如果我理解你的情况并非如此。
编辑:好的,从阅读你的评论看起来你似乎并不十分清楚相对网址是如何工作的。 “/css/main.css”与目录树中页面的位置无关。它表示在Web服务器根目录中名为“css”的目录中名为“main.css”的文件。将文件放在部署服务器上时,css目录在位于Web服务器的根目录下。但听起来你正在把css目录放在一个以客户端命名的子目录中...所以你的css文件现在位于“/clientname/css/main.css”。如果我理解正确,您可以使用相对网址执行您想要的操作。如果您的html文件与css目录位于同一目录中,则需要“css / main.css”。如果它位于包含css目录的目录的子目录中,则需要“../css/main.css"-”“”表示当前目录的父目录。如果使用相对URL,只要文件之间的关系不变,它们就会继续工作。
这是一个关于这个主题的页面,它充分地解释了它,我认为:http://www.webreference.com/html/tutorial2/3.html。这几乎是我在谷歌发现的第一件事,所以可能有更好的解释。
您可以使用许多Apache指令来执行此操作,但是如果使用相对URL会对您有用(并且如果我理解正确的那样)那么这可能会更简单并且不太可能导致你进一步麻烦。