是否可以为同一个域名拥有多个文档根但具有不同的语言标志?
例子:
www.example.com/en
以及例如www.example.com/en/about-us
,等等转到/www/site_new
。www.example.com/de
等www.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/en
并www.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
。