我在Windows上安装了Apache 2.2,服务于我所有网站的文件夹是:
C:\Users\GSTAR\Documents\Web Sites
在这个文件夹中有每个网站的子文件夹
我目前通过导航到http://localhost/site1 , http://localhost/site2等访问我的服务器上的这些网站。
我现在的问题是,有些网站有相对的URLpath,这会导致问题,因为找不到资源(它试图查找根文件夹)。
我不特别希望使用绝对URL。 我有一个虚拟主机,因为这可能是一个解决scheme。 但是我遇到了一些麻烦。
我希望继续使用相同的URL来访问网站 – 但是我已经阅读的一些教程build议使用site.localtypes的约定,但是我不希望这样做。
有人有任何build议如何使这项工作?
处理这个问题的理想方法是创build多个虚拟主机 – 每个虚拟主机一个。 可能需要花费一些时间来更改url,并改变您习惯的访问方式。 如果您继续在多个项目中使用此设置,这将为您节省大量时间和麻烦。 这看起来像一个开发设置,所以它也有助于模仿生产行为。
你可能正在寻找像mod_rewrite http://httpd.apache.org/docs/current/mod/mod_rewrite.html与RewriteBase。
在这个问题上,我和斯凯亚季耶夫在一起 。 最适合你的方法应该是设置虚拟主机。 这很简单。 所有你需要做的是:
1.)取消激活httpd.conf (或apache.conf的ServerRoot和DocumentRoot指令,或者在您的系统上调用主configuration文件)。 取消激活意味着要么删除该行,要么将其放在“#”面前。
2.)取消激活相应的<Directive...>容器。 您可以find它们,因为它们与DocumentRoot具有相同的path。
这两个步骤不是必需的,但我这样做是出于某些原因
3.)包含一个名为vhost.conf的新文件或使用您的安装提供的文件。 你可以通过在你的httpd.conf添加下面这行来实现
Include "C:\Path\to\apache2\confdir\vhost.conf"
4.)在vhost.conf顶部添加NameVirtualHost *:80 (正好一次),其中80是你希望apache监听的端口
5.)像这样添加一个<VirtualHost ...>容器。
<VirtualHost *:80> ServerName site1.local DocumentRoot "C:\Users\GSTAR\Documents\Web Sites\Site1\" DirectoryIndex index.html index.php <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory "C:\Users\GSTAR\Documents\Web Sites\Site1\"> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny Allow from all </Directory> </VirtualHost>
这只是一个示例configuration。 你必须调整,以适应您的需求。
6.)以上面的样式添加尽可能多的<VirtualHost ...>容器。 只需调整DocumentRoot和Directory指令即可
7.)要使site1.local和site2.local工作,您将不得不编辑您的主机文件,或修改您的本地DNS服务器。 如果您使用的是Windows 7,则可以通过右键单击首选编辑器来访问此文件,并以pipe理员权限启动它。 如果你不这样做,你不能编辑它。 现在通过浏览到C:\Windows\system32\drivers\etc\hosts来打开它
如果您需要进一步的帮助,请发表评论。