我在虚拟机上安装了 LAMP,用于多个项目。我的文档根目录是 /www,我为每个项目在其中创建了一个文件夹。
/www/project1-name/
/www/project2-name/
我在浏览器中像这样访问它们:
http://dev.vm/project-name/
我想将我的 htaccess 和 index 文件移动到项目内的公共文件夹,以便它们更准确地匹配其生产设置。
/www/project-name/public/
...但仍然使用与上面相同的 URL 访问它们。如何配置 Apache 以查找 public/ 文件夹作为每个项目的文档根目录?
注意:我知道我可以为每个项目创建主机和虚拟主机条目以拥有它自己的文档根目录,但我试图避免这样做 - 因为我计划在我的远程服务器上使用类似的设置来容纳名为“demo”的子域中的多个项目。
答案1
我会更进一步使用 mod_alias 并使用别名匹配指令。应该与 EightbitTony 的解决方案一样工作,但会为您提供额外的正则表达式功能。
我做了一些测试,看起来应该可以做到。
AliasMatch ^/([a-zA-Z0-9_-]+)/(.*) /www/$1/public/$2
答案2
我认为您不想做任何重写,难道您不只是想要一些好的老式的别名语句吗?
从http://httpd.apache.org/docs/2.0/mod/mod_alias.html,
Description: Maps URLs to filesystem locations
Syntax: Alias URL-path file-path|directory-path
Context: server config, virtual host
Status: Base
Module: mod_alias
所以,
Alias /project-name/ /some/path/to/project-name/public/
Alias /project-name2/ /some/path/to/project-name2/public/
Alias /project-3/ /another/totally/different/path/public/
答案3
看看 apache动态配置的海量虚拟主机文档。听起来你没有大量的虚拟主机,所以VirtualDocumentRoot
和相关的配置指令可能会做你想要的事情,例如
VirtualDocumentRoot /www/%2/public
这将映射到/www/project-name/public
。%n
参数是插值来自 URL,其中 %0 为整体,%1 为第一部分,等等。