如何为自定义目录配置apache?

如何为自定义目录配置apache?,apache,mod-rewrite,apache2,Apache,Mod Rewrite,Apache2,正在尝试将apache2配置为从相对于站点根目录的其他文档根目录加载example.com/forum/。论坛安装在服务器上的其他位置 是否有目录别名命令?我找到了apache的别名配置条目,但运气不好 基本上,我希望example.com拥有与以前相同的目录,但example.com/forum/将托管在同一服务器上的其他地方 我用mod_rewrite标记了这个问题,因为我想这可能是关键 干杯 Alias是正确的方法,除非你在问题中没有透露一些微妙之处 # http.conf Alias

正在尝试将apache2配置为从相对于站点根目录的其他文档根目录加载example.com/forum/。论坛安装在服务器上的其他位置

是否有目录别名命令?我找到了apache的
别名
配置条目,但运气不好

基本上,我希望example.com拥有与以前相同的目录,但example.com/forum/将托管在同一服务器上的其他地方

我用mod_rewrite标记了这个问题,因为我想这可能是关键


干杯

Alias
是正确的方法,除非你在问题中没有透露一些微妙之处

 # http.conf
 Alias /forum /usr/lib/bbs/  # or whatever
Alias
的工作是获取进入系统的抽象URL,并将其映射到具体的文件系统路径。一旦这样做了,请求就不再是一个URL,而是一个路径。如果没有处理该URL的
别名
或类似指令,则它将通过
DocumentRoot
映射到一个conrete路径


如果这不起作用,您必须进一步调试它。访问
/论坛
时是否出现错误?查看错误日志。

这取决于您想要什么。您可以使用real path“硬链接”,并且它可以工作(因此您认为它可以与mod_rewrite一起工作是正确的)

快速示例(适用于我的生产域)进行内部更改(我添加了一个子目录):

因此,您可以轻松地执行以下操作:

 RewriteRule  ^/forum/(.*) %{DOCUMENT_ROOT}/mysubfolder%{REQUEST_FILENAME} [QSA,L]

我的建议是,如果您计划有更多的重写规则,请保持所有内容的同质性,即:继续只使用重写规则,因此请使用我上面的建议。这样,您就不会混合使用
别名
重写规则
等等。对于好的和干净的东西:保持所有东西的均匀性。

p.S.这是非常常见的。也许运行Apache的用户在文档根目录之外设置了一些应用程序,例如webmail等。感谢您的帮助。我在解释alias上的文档时遇到困难。我一定会把这件事告诉任何和我一起工作的人。这是胡说八道
Alias
RewriteRule
执行不同的操作,这两种操作都适用于URL处理的不同阶段,并且发生在同一服务器配置中
Alias
将URL映射到目录(并且不会递归:不会重新注入
Alias
的结果以进行重新处理)。它是将顶级URL重定向到服务器上实现的各种应用程序区域的正确工具。如果不使用
别名
,而只使用
重写规则
,则可以得到
重写规则
-s的错误组合,而不是两者的错误组合。切勿在程序中同时使用数组和列表。保持均匀,这样就不会有不好的混合。另外,不要在有浮点数的程序中使用整数,反之亦然。只使用函数或宏,并坚持一种范式:例如,如果有函数编程,不要使用对象。清洁和均匀是目标;完成工作只是一个受欢迎的副作用。你的第一句话就足够了,谢谢你的建议。但是如果你使用了
Alias/forum/usr/lib/bbs/
,请告诉我,在重写规则中,像
RewriteRule(.*)/forum
这样的东西将永远不会被更改为
/usr/lib/bbs/
。否则,我的立场是:使用别名和重写规则可能会导致维护问题。简单示例:在某些Linux发行版上,在根文件(
httpd.conf
)中使用别名,并在vhost文件中重写规则。开发人员制作vhost文件的拷贝粘贴,猜猜怎么着?它不起作用。经过1-2个小时的搜索,他终于发现这个------开发者在
httpd.conf
文件夹中使用了别名。我不聪明,我总是尝试做简单的事情。所以,也许你认为全世界都可以按照你的建议去做,但从我的观点和我的经验来看,你应该尽可能地把与一个网站有关的事情放在同一个地方。顺便说一句,我知道您可以在vhost环境中使用Alias,但实际上,它通常是在
httpd.conf
文件中完成的。
 RewriteRule  ^/forum/(.*) %{DOCUMENT_ROOT}/mysubfolder%{REQUEST_FILENAME} [QSA,L]