将子域站点移动到主域 - apache 虚拟主机未重定向到源文件

将子域站点移动到主域 - apache 虚拟主机未重定向到源文件

在 Debian 中,我试图将主站点子域上的 wiki 站点移动到站点路径:wiki.mysite.comto mysite.com/wiki

我有两个dns记录:wiki.mysite.com并且mysite.com 在apache下还有两个conf文件:

  • wiki.mysite.com.conf

  • mysite.com.conf

并有网站目录:

  • /var/www/html/www.mysite.com

  • /var/www/html/www.wiki.mysite.com

一切都运转良好。我现在需要将 wiki 站点移到主站点的路径下,www.mysite.com/wiki...我已尝试对 进行以下更新mysite.com.conf,但重新启动 apache 后,我在尝试时收到“未找到:在此服务器上找不到请求的 URL”访问mysite.com/wiki(但mysite.com工作正常)。我帮。做什么? :

<VirtualHost *:80>

Server Admin webmaster@localhost
ServerName mysite.com
ServerAlias www.mysite.com

DocumentRoot /var/www/html/www.mysite.com

<Directory /var/www/html/www.mysite.com/>
AllowOverride All
</Directory>
<VirtualHost>

<VirtualHost *:80>
Server Admin webmaster@localhost
ServerName mysite.com/wiki
ServerAlias www.mysite.com/wiki

DocumentRoot /var/www/html/www.wiki.mysite.com

<Directory /var/www/html/www.wiki.mysite.com/>
AllowOverride All
</Directory>

<VirtualHost>

我只添加了第二个虚拟主机,第一个虚拟主机最初是在我将该站点设置为子域站点时存在的。重复一遍,第一个虚拟主机仍然有效。

答案1

您正在寻找的是alias条目。别名将为 URL 的给定子路径指定备用位置。您不需要为此使用多个虚拟主机。

是 apache 文档alias。以下信息来自那里:

该模块中包含的指令允许在请求到达服务器时操作和控制 URL。 Alias 和 ScriptAlias 指令用于在 URL 和文件系统路径之间进行映射。这允许不直接位于 DocumentRoot 下的内容作为 Web 文档树的一部分。

请记住,如果 www.wiki.mysite.com 中的网站文档引用了绝对 URL,例如指向/index.php.这会去mysite.com/index.php,不会mysite.com/wiki/index.php

<VirtualHost *:80>

Server Admin webmaster@localhost
ServerName mysite.com
ServerAlias www.mysite.com

DocumentRoot /var/www/html/www.mysite.com
Alias /wiki /var/www/html/www.wiki.mysite.com

<Directory /var/www/html/www.mysite.com/>
    AllowOverride All
</Directory>

<Directory /var/www/html/www.wiki.mysite.com/>
    AllowOverride All
</Directory>

</VirtualHost>

相关内容