Apache重写到文件系统或代理

Apache重写到文件系统或代理,apache,mod-rewrite,Apache,Mod Rewrite,我想创建一个Apachemod_rewrite规则来做两件事: 当请求/file system target时,提供文件系统目录的内容,并且 每当未请求/文件系统目标时,代理 例如: 但是,在查看RewriteLog的输出时,后一条规则始终匹配,而前者从不匹配。我遗漏了什么?事实证明,“后一条规则总是匹配的&前一条规则永远不匹配”这句话可能不是真的;我有一个混乱的httpd.conf,其中在多个地方启用了重写日志记录 无论如何,第一条规则绝对是不完整的。应该是这样的: RewriteRule ^

我想创建一个Apache
mod_rewrite
规则来做两件事:

  • 当请求
    /file system target
    时,提供文件系统目录的内容,并且
  • 每当未请求
    /文件系统目标时,代理
  • 例如:


    但是,在查看
    RewriteLog
    的输出时,后一条规则始终匹配,而前者从不匹配。我遗漏了什么?

    事实证明,“后一条规则总是匹配的&前一条规则永远不匹配”这句话可能不是真的;我有一个混乱的httpd.conf,其中在多个地方启用了重写日志记录

    无论如何,第一条规则绝对是不完整的。应该是这样的:

    RewriteRule ^/file-system-target(.+)$ /path/to/file/system/target/$1 [L]
    
    我还添加了一个额外的规则来处理(缺少)尾部斜杠:

    RewriteRule ^/file-system-target$ /path/to/file/system/target/$1 [L]
    
    因此,我最终得出以下结论:

    RewriteRule ^/file-system-target$ /path/to/file/system/target/$1 [L]
    RewriteRule ^/file-system-target(.+)$ /path/to/file/system/target/$1 [L]
    RewriteRule ^/(.*) http://localhost:8080 [P]
    

    我将假设有更优雅的方法来实现此功能,但我对上述配置非常满意,可以将此任务称为“完成”。

    事实证明,“后一个规则总是匹配的&前一个规则永远不匹配”
    可能不是真的;我有一个混乱的httpd.conf,其中在多个地方启用了重写日志记录

    无论如何,第一条规则绝对是不完整的。应该是这样的:

    RewriteRule ^/file-system-target(.+)$ /path/to/file/system/target/$1 [L]
    
    我还添加了一个额外的规则来处理(缺少)尾部斜杠:

    RewriteRule ^/file-system-target$ /path/to/file/system/target/$1 [L]
    
    因此,我最终得出以下结论:

    RewriteRule ^/file-system-target$ /path/to/file/system/target/$1 [L]
    RewriteRule ^/file-system-target(.+)$ /path/to/file/system/target/$1 [L]
    RewriteRule ^/(.*) http://localhost:8080 [P]
    
    我假设有更优雅的方法来实现这个特性,但是我对上面的配置很满意,可以将这个任务称为“完成”