Apache动态子文件夹

Apache动态子文件夹,apache,mod-rewrite,mod-alias,mod-vhost-alias,Apache,Mod Rewrite,Mod Alias,Mod Vhost Alias,我需要设置Apache,以便它处理2个不同的磁盘位置,并根据URL上的子文件夹以友好方式映射不同的站点: http://localhost1/site1.com/ http://localhost1/site2.com/ http://localhost2/site3.com/ ... 这将分别映射到: C:\folderOne\site1.com\public_html C:\folderOne\site2.com\public_html C:\folderTwo\site3.com\pub

我需要设置Apache,以便它处理2个不同的磁盘位置,并根据URL上的子文件夹以友好方式映射不同的站点:

http://localhost1/site1.com/
http://localhost1/site2.com/
http://localhost2/site3.com/
...
这将分别映射到:

C:\folderOne\site1.com\public_html
C:\folderOne\site2.com\public_html
C:\folderTwo\site3.com\public_html
...
我发现一些例子使用mod_vhost_别名、mod_别名和mod_rewrite来处理不同的事情,但无法实现我需要的功能


谢谢。

要动态重定向站点,您可以尝试以下操作:

在Apache的sites available文件夹中,应该有一个名为000-deafult.conf的文件,或者类似的文件。您需要编辑此文件以执行重定向

但是,您可以动态重定向到另一个子文件夹的唯一方法是,如果您的域具有指示要使用的子文件夹的内容,例如根据TLD对域进行排序

因此,我建议如下:

 UseCanonicalName Off

 <VirtualHost *:80>
  ServerName vhosts.fqdn
  ServerAlias www.*.com
  VirtualDocumentRoot /c/com/%2/public_html
 </VirtualHost>

 <VirtualHost *:80>
  ServerName vhosts.fqdn
  ServerAlias *.com
  VirtualDocumentRoot /c/com/%1/public_html
 </VirtualHost>

<VirtualHost *:80>
  ServerName vhosts.fqdn
  ServerAlias www.*.net
  VirtualDocumentRoot /c/net/%2/public_html
 </VirtualHost>

 <VirtualHost *:80>
  ServerName vhosts.fqdn
  ServerAlias *.net
  VirtualDocumentRoot /c/net/%1/public_html
 </VirtualHost>
等等


希望这能回答您的问题。

谢谢您的回复。尽管这对域名映射.com到文件夹有效,但URL的子文件夹仍然是一个问题,因为ServerAlias不考虑.com之后的任何内容。我需要.com//映射到/home/。我不太明白000-deafult.conf的目的是什么?谢谢。服务器不考虑.com之后的任何内容,因为它像目录结构一样传递到“文件夹”。因此//应该指向public_html folder中的文件夹//但我需要文档根为/home/,因为该文件夹包含网站的index.php入口点。使用您的解决方案,例如,domain.com/site/param将尝试在site/param中查找文件,不是吗?那不行,因为没有param文件夹。是的,你是对的。我可以建议您查看以下URL并从那里研究您问题的URL部分吗恐怕那不是我需要的。到目前为止,我已经将其配置为这样,使用域部分作为重定向的键,但我需要的是子文件夹部分也要使用。作为查询的一部分传递它也不是我想要的。它应该只用于映射目录根,并充当普通根路径,URL位于domain.com/folder之后。无论如何感谢您的帮助。问题是如何将域后的第一部分作为参数:。有什么想法吗?请帮忙!非常感谢。