我有一个虚拟机,我用于多个项目LAMP安装。 我的文档根目录是/ www,并为其中的每个项目创build一个文件夹。
/www/project1-name/ /www/project2-name/
我在我的浏览器中访问它们是这样的:
http://dev.vm/project-name/
我想将我的htaccess和索引文件移动到项目中的公用文件夹,以便更准确地匹配他们的生产设置。
/www/project-name/public/
…但仍然访问他们与上面相同的url。 我如何configurationApache来查找公共/文件夹作为我的每个项目的文档根?
注意:我知道我可以为每个项目创build主机和虚拟主机条目,使其拥有自己的文档根目录,但是我试图避免这种情况 – 因为我计划在远程服务器上使用类似的设置来保存子域中的多个项目称为“演示”。
我会更进一步与mod_alias和使用AliasMatch指令。 应该像EightbitTony的解决scheme一样工作,但给你额外的正则expression式的权力。
我做了一些testing,看起来应该这样做。
AliasMatch ^/([a-zA-Z0-9_-]+)/(.*) /www/$1/public/$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/
看看apache dynamicconfiguration的大容量虚拟主机文档。 这听起来不像你有大量的虚拟主机,所以VirtualDocumentRoot和相关的configuration指令可能会做你想要的,例如
VirtualDocumentRoot /www/%2/public
它将映射到/www/project-name/public 。 %n参数是从URL中插入的,%0是整体,%1是第一部分等。