我的服务器结构如下:
|- var
|-- www
|--- website1
|--- website2
|--- website3
我目前正在处理website1
,但我发现当我提交一个Ajax表单时,它会返回以下错误:
http://www.website.com/signup: The requested URL /signup was not found on this server.
应该在http://www.website.com/website1/signup
下查看。
以下是我目前在apache2.conf
中添加的内容:
Alias /website1 "/var/www/website1/public"
<Directory /var/www/website1>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
我的DocumentRoot
在我的VirtualHosts中设置为/var/www
。我该如何解决这个问题?
答案 0 :(得分:2)
这不起作用。您将Alias
指令与Virtual Host
混淆了。
您所谓的www.website1.com
是主机名,而不是网址的目录部分。因此Alias指令不会捕获。 Alias指令允许您通过Alias /folder1 ...
之类的指令将http://www.website.com/folder1之类的内容映射到本地文件系统中的任意位置。不多。它没有看到请求的主机,因为它位于内部主机配置中。
相反,您需要为要为其提供内容的每个主机名/域名使用虚拟主机。如果您还没有设置虚拟主机,那么http服务器将回退到默认主机,即您所谓的www.website.com
。
apache http服务器的所有选项都以优异的质量记录。我建议您查看该文档:http://httpd.apache.org/docs/2.2/vhosts/
准确地说:你所描述的可以实际上是通过网址重写来完成的。但这将是一种痛苦而且非常不透明。虚拟主机是可行的方法。
答案 1 :(得分:1)
您必须使用Apache的虚拟主机。
在Apache配置中:
# Ensure that Apache listens on port 80
Listen 80
# Listen for virtual host requests on all IP addresses
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /www/example1
ServerName www.example.com
# Other directives here
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /www/example2
ServerName www.example.org
# Other directives here
</VirtualHost>