【问题标题】:Apache Location directive for dynamic content fails if nested path如果嵌套路径,动态内容的 Apache 位置指令会失败
【发布时间】:2012-02-23 21:01:14
【问题描述】:

我使用的是 Apache 2.2x。大部分内容是通过 mod_perl 生成的。因此,它是没有文件系统映射的动态内容。完美利用。

Apache 配置:

<Location /finance_module1>
  SetHandler perl-script
  PerlResponseHandler Finance::Module1
</Location>

<Location /finance/module2>
  SetHandler perl-script
  PerlResponseHandler Finance::Module2
</Location>

Module1 工作正常,此处显示以表明我的设置可以正常工作。

模块 2 不工作。 Apache 说“文件不存在:/home/joe/www/htdocs/finance”。模块配置之间的唯一区别是 Module2 位置包含多个斜杠(我称之为嵌套路径)。

关于“文件不存在”错误:当然它不存在——它是位置,而不是文件或目录。那么为什么会这样呢?

我希望能够使用带有多个斜杠的路径,因为我有很多 mod_perl 模块,并且出于控制目的进行分类会很好。举一个简单的例子,robots.txt 可以简单地说:

Disallow: /finance/

Apache 文档明确指出 指令不需要映射到文件系统,并且非常适合动态生成的内容。

我做错了什么?有解决方法吗? (除了明显的“不要那样做”)。

谢谢。

【问题讨论】:

    标签: apache apache2 mod-perl mod-perl2


    【解决方案1】:

    回答我自己的问题,以帮助其他想同样问题的人。

    简答,使用 LocationMatch。

    在上面的示例中,假设 url 是 /finance/module1 和 /finance/module2。有了“finance/”路径,可以在需要的情况下将所有财务处理程序配置为一个组。

    例如:

    <LocationMatch /finance/.*>
      SetHandler perl-script
      PerlAccessHandler foo
    </LocationMatch>
    
    <Location /finance/module1>
      SetHandler perl-script
      PerlResponseHandler Finance::Module1
    </Location>
    
    <Location /finance/module2>
      SetHandler perl-script
      PerlResponseHandler Finance::Module2
    </Location>
    

    【讨论】:

    • 第一节的简单 也不例外。
    【解决方案2】:

    可能是小错字?

    <Location /finance_module1>
    

    对比

    <Location /finance/module2>
    

    不确定是不是这个问题。

    也许这个(添加到 httpd.conf)

    Alias /finance "path-to-files"
    <Directory "path-to-files">
      Options +Indexes
      AllowOverride All
      Order allow,deny
      Allow from all
    </Directory>
    

    然后试试这个脚本。你也可以在那里创建一个空文件夹?

    【讨论】:

    • 嗯,不,不是错字。也许我不清楚。这就是问题的重点,因此是“嵌套路径”标题。
    • 乔,即使您有自己的答案,我也认为您的问题中存在拼写错误,“/finance_module1”与“/finance/module1”。注意斜线/下划线的区别。
    • 不,这不是错字。我编辑了这个问题,希望现在很清楚。重点是多个斜线不起作用,从而消除了为控制和规则目的对模块进行分类的能力。
    猜你喜欢
    • 1970-01-01
    • 2012-10-29
    • 2014-10-27
    • 1970-01-01
    • 2017-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-13
    相关资源
    最近更新 更多