为多个项目设置共享主机的根目录
Set root directory on shared hosting for multiple projects
在本地,我可以按照these instructions. What I really want is to set up a way to have multiple projects with a different root directory for each project. I did this with help from this question更改apache的根目录。
我有一个共享托管计划(Apache 运行ning on Linux Ubuntu),我想在更类似于生产的环境中测试这些项目。我 运行 遇到的问题是,我无法为每个项目配置不同的根目录,因为我无法在此共享主机上配置 Apache。
我的问题是,有什么方法可以 'tell' Apache 我有不同的项目和不同的文档根目录?我希望有一个解决方案,比如使用此设置为每个项目创建一个 .htaccess 文件,但我不确定这是否可行。
有几个 "it depends",所以我将介绍最常见的设置。
1) 你如何定义"multiple projects"?通常这意味着 1 个项目 == 1 个域。
- 您的提供商应该允许您在您的网站上设置多个域 space。然后每个域都链接到您网站中的 1 个目录 space。这会产生费用,为每个域支付。
- 例如。对于 1and1(不是宣传,它只是碰巧在他们的设置中有一个站点):www.example1.com 指向 /example1,www.example2.com 指向 /example2,依此类推。这是在他们的管理界面中设置的。
- 这样做相当于设置了多个
VirtualHost
节。
2) 1 个项目 == 1 个域前缀
- 根据您的托管商的做法,您可以设置 prefix1.example.com 指向 /site1,prefix2.example.com 指向 /site2。
- 用户从未在他们的地址栏中看到 /site1 或 /site2。
- 这也是在您的提供商的管理界面中完成的。
3) 1个项目==一个域的1个子目录,不能编辑.htaccess
- 如果您不介意,每个项目都可以是您拥有的 1 个域的子目录。
- www.example.com/project1, www.example.com/project2, ...
- 您站点的用户必须输入 www.example.com/projectX 才能访问该项目。它没有隐藏在配置中,用户必须在浏览器地址栏中明确输入他想要的项目。
- 这不需要在 Apache 中或主机级别进行任何配置。干脆把不同的目录放到整个域的
DocumentRoot
目录下。
- 这不提供 "clean" 站点分隔,但可能足以满足您的需要。
4) 与 3) 类似,但您可以编辑 .htaccess 文件
- 在
DocumentRoot
目录中创建一个 .htaccess 文件
- 在那里,使用
Alias
告诉 Apache 对 URL 中的子目录的请求对应于磁盘上的另一个目录,而不是 DocumentRoot
下的其他目录,如 3 )
- 这种情况不太可能发生,因为您的托管商可能只允许您将内容放在
DocumentRoot
下。
- 见https://httpd.apache.org/docs/2.4/mod/mod_alias.html
玩得开心!
在本地,我可以按照these instructions. What I really want is to set up a way to have multiple projects with a different root directory for each project. I did this with help from this question更改apache的根目录。
我有一个共享托管计划(Apache 运行ning on Linux Ubuntu),我想在更类似于生产的环境中测试这些项目。我 运行 遇到的问题是,我无法为每个项目配置不同的根目录,因为我无法在此共享主机上配置 Apache。
我的问题是,有什么方法可以 'tell' Apache 我有不同的项目和不同的文档根目录?我希望有一个解决方案,比如使用此设置为每个项目创建一个 .htaccess 文件,但我不确定这是否可行。
有几个 "it depends",所以我将介绍最常见的设置。
1) 你如何定义"multiple projects"?通常这意味着 1 个项目 == 1 个域。
- 您的提供商应该允许您在您的网站上设置多个域 space。然后每个域都链接到您网站中的 1 个目录 space。这会产生费用,为每个域支付。
- 例如。对于 1and1(不是宣传,它只是碰巧在他们的设置中有一个站点):www.example1.com 指向 /example1,www.example2.com 指向 /example2,依此类推。这是在他们的管理界面中设置的。
- 这样做相当于设置了多个
VirtualHost
节。
2) 1 个项目 == 1 个域前缀
- 根据您的托管商的做法,您可以设置 prefix1.example.com 指向 /site1,prefix2.example.com 指向 /site2。
- 用户从未在他们的地址栏中看到 /site1 或 /site2。
- 这也是在您的提供商的管理界面中完成的。
3) 1个项目==一个域的1个子目录,不能编辑.htaccess
- 如果您不介意,每个项目都可以是您拥有的 1 个域的子目录。
- www.example.com/project1, www.example.com/project2, ...
- 您站点的用户必须输入 www.example.com/projectX 才能访问该项目。它没有隐藏在配置中,用户必须在浏览器地址栏中明确输入他想要的项目。
- 这不需要在 Apache 中或主机级别进行任何配置。干脆把不同的目录放到整个域的
DocumentRoot
目录下。 - 这不提供 "clean" 站点分隔,但可能足以满足您的需要。
4) 与 3) 类似,但您可以编辑 .htaccess 文件
- 在
DocumentRoot
目录中创建一个 .htaccess 文件 - 在那里,使用
Alias
告诉 Apache 对 URL 中的子目录的请求对应于磁盘上的另一个目录,而不是DocumentRoot
下的其他目录,如 3 ) - 这种情况不太可能发生,因为您的托管商可能只允许您将内容放在
DocumentRoot
下。 - 见https://httpd.apache.org/docs/2.4/mod/mod_alias.html
玩得开心!