我正在尝试在一个Apache服务器上编写全部在一个IP地址上的大约5个网站。
例如:
但是,如果我在站点2上创build一个链接,例如, /index.php,你会期望它在/var/www/site2/index.php …但它实际上parsing为/var/www/index.php。
有无论如何设置Apache知道单独的站点文件夹需要行为和解决到单独的文件夹?
这是我的网站,目前可用的文件。 我相信一个相当默认的设置:
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride all Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/access.log combined Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory>
任何帮助将是apreciated。
非常感谢你。
安德鲁·巴洛
你需要在<VirtualHost>
里有一个serverName指令。 它会告诉服务器哪个虚拟主机当前正在使用取决于浏览器的请求(如果您的客户端访问http://site1.example.com或http://site2.example.com ,他们将连接到相同的IP,因此服务器,但请求包含原始请求url)。 您必须复制您的<VirtualHost>
块以使每个托管站点有一个。 主要是每个块的serverName和DocumentRoot不同。 您可以使用“apache2ctl -S”来查看apache如何理解您的虚拟主机设置。
您可以使用这种内容的单个文件:
<VirtualHost *:80> serverName site1.myserver.com DocumentRoot /var/www/site1 ... </VirtualHost> <VirtualHost *:80> serverName site2.myserver.com DocumentRoot /var/www/site2 ... </VirtualHost> <VirtualHost *:80> serverName site3.myserver.com DocumentRoot /var/www/site3 ... </VirtualHost> <VirtualHost *:80> serverName site4.myserver.com DocumentRoot /var/www/site4 ... </VirtualHost> <VirtualHost *:80> serverName site5.myserver.com DocumentRoot /var/www/site5 ... </VirtualHost>
当然,也许可以肯定的是,所有这些名称的DNS结束在您的IP。 只要他们登陆你的服务器IP,并且你有一个对应的serverName就可以了,它不需要是子域名。 如果您需要一个站点的额外名称,则可以在serverName下面添加“serverAlias secondname.myserver.com thirdname.myserver.com”
@ Zeograd的答案可能是大多数解决方案的正确答案,但是我有一个类似的问题,我所需要做的是使用a2enmod
命令启用重写模块。
这是我在Ubuntu中通过命令行运行的内容:
sudo a2enmod rewrite sudo service apache2 restart
如果sudo service apache2 restart
不起作用,您可以尝试:
sudo /etc/init.d/apache2 restart