![不知道如何在 Apache 上创建子域?](https://linux22.com/image/560482/%E4%B8%8D%E7%9F%A5%E9%81%93%E5%A6%82%E4%BD%95%E5%9C%A8%20Apache%20%E4%B8%8A%E5%88%9B%E5%BB%BA%E5%AD%90%E5%9F%9F%EF%BC%9F.png)
我已启用 mod_vhost_alias。我的 GoDaddy DNS A-Record Host='*' 指向我的服务器。
在 /etc/apache2/sites-available/000-default 我有
<VirtualHost *:80>
UseCanonicalName Off
VirtualDocumentRoot /var/www/%0/public_html
VirtualScriptAlias /var/www/%0/cgi-bin
</VirtualHost>
但是当我尝试访问 subdomain.domain.com 时,我得到:
未找到
请求的 URL / 未在此服务器上找到。整天都在忙于此事!请帮忙!谢谢!
更新:因此我通过将 %0 更改为 %1 来使其工作,因为我的文件夹名称是“子域”,但是现在如果我转到 domain.com 而不是 subdomain.domain.com,我会收到错误...我怎样才能两全其美?
答案1
解决方案如下:修复我的示例中的 C:/,并更新您的路径。
确保 vHosts 部分的顶部有“NameVirtualHost”。
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "C:/xampp/htdocs/"
ServerName u4ik.info
ServerAlias www.u4ik.info
</VirtualHost>
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "C:/xampp/url/"
ServerName 2.u4ik.us
ServerAlias 2.u4ik.us
</VirtualHost>
答案2
我认为为了简单起见,您需要选择其中一个。如果您要使用 Virtualhost,请按照 U4iK_HaZe 提供的示例进行操作,如下所示:
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /yourpath/to/yoursite/
ServerName yourdomain.com
ServerAlias www.yourdomain.com
</VirtualHost>
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /yourpath/to/yoursitesubdomain/
ServerName subdomain.yourdomain.com
ServerAlias www.subdomain.yourdomain.com
</VirtualHost>
如果你要使用 VirtualDocumentRoot,你可以这样做:
UseCanonicalName Off
VirtualDocumentRoot /yourpath/%0/htdocs
不过,我认为您知道这部分。我不确定您是否在服务器上创建了适当的目录。%0 匹配整个域,因此在服务器上,如果您需要调出 subdomain1.yourdomain.com,目录路径应该是:
/yourpath/subdomain1.yourdomain.com/htdocs
对于 subdomain2.yourdomain.com:
/yourpath/subdomain2.yourdomain.com/htdocs
但是,由于您似乎没有太多模式匹配经验,我强烈建议您使用 VirtualHost 选项,暂时不要使用 VirtualDocumentRoot。