Apache 和基于 URL 的不同文档根目录

Apache 和基于 URL 的不同文档根目录

是否可以为同一个域名拥有多个文档根但具有不同的语言标志?

例子:

  • www.example.com/en以及例如www.example.com/en/about-us,等等转到/www/site_new

  • www.example.com/dewww.example.com/de/uber-uns转到/www/site_old

有人提到了符号链接,但我不知道如何使用上述场景实现这一点。

答案1

是否可以DocumentRoot对同一域名有多个指令但使用不同的语言标志?

据我所知,这个问题的严格答案是“否”(即,您不能DocumentRoot对给定的域名有多个指令)。但是,您可以创建子域作为虚拟主机并为其赋予自己的DocumentRoot

<VirtualHost *:80>

ServerName example.com
ServerAlias www.example.com en.example.com

DocumentRoot "/www/site_new"

</VirtualHost>

<VirtualHost *:80>

ServerName de.example.com
#ServerAlias www.example.com

DocumentRoot "/www/site_old"

</VirtualHost>

使用别名将 URL 映射到文件夹

使用 ApacheAlias指令可以为您的示例提供解决方案:

Alias "/en" "/www/site_new"
Alias "/en/about-us" "/www/site_new"

Alias "/de" "/www/site_old"
Alias "/de/uber-uns" "/www/site_old"

在这种情况下:

  • www.example.com/enwww.example.com/en/about-us映射到/www/site_new

  • www.example.com/de并将www.example.com/de/uber-uns映射到/www/site_old

有人提到了符号链接,但我不知道如何通过上面概述的场景实现这一点。

Alias 您可以使用符号链接作为1 的目标。

否则,使用仅有的符号链接,我想你会对子文件夹感到困惑。例如(如果我没记错的话):

  • 在您的 中DocumentRoot/en需要有一个指向 的符号链接/www/site_new

  • 在 中/www/site_new/about-us还需要有一个到 的符号链接/www/site_new


1 使用 Windows 上的 Apache,这可以克服位于DocumentRoot给定范围之外的文件夹的权限问题httpd.conf


相关内容