如果嵌套路径,动态内容的 Apache Location 指令将失败
我正在使用 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 文档明确指出 <<地点>指令不需要映射到文件系统,并且非常适合动态生成的内容。
我做错了什么?有解决方法吗? (除了明显的“只是不要这样做”)。
谢谢。
I'm using Apache 2.2x. Most of the content is generated via mod_perl. So, it's dynamic content that has no filesystem mapping. Perfect use of < Location >.
Apache config:
<Location /finance_module1>
SetHandler perl-script
PerlResponseHandler Finance::Module1
</Location>
<Location /finance/module2>
SetHandler perl-script
PerlResponseHandler Finance::Module2
</Location>
Module1 works, and is shown here to show that my setup otherwise works.
Module2 does not work. Apache says "File does not exist: /home/joe/www/htdocs/finance". The only difference between the module configurations is that Module2 location contains multiple slashes (what I'm calling a nested path).
About the "File does not exist" error: Of course it doesn't exist -- it's a Location, not a File or Directory. So why does this happen?
I would like to be able to use paths with multiple slashes because I've got a lot of mod_perl modules, and it would be nice to categorize for purposes of control. For one trivial instance, robots.txt could simply say:
Disallow: /finance/
The Apache docs specifically state that < Location > directives need not map to the filesystem, and are well-suited for dynamically generated content.
What am I doing wrong? Is there a workaround? (Besides the obvious "just don't do that").
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
回答我自己的问题,是为了其他想知道同样问题的人的利益。
简短的回答,使用 LocationMatch。
在上面的示例中,假设 URL 为 /finance/module1 和 /finance/module2。在需要的情况下,拥有“财务/”路径允许将所有财务处理程序配置为一个组。
例如:
Answering my own question, for the benefit of anyone else wondering the same thing.
Short answer, use LocationMatch.
In the example above, say the urls are /finance/module1 and /finance/module2. Having the "finance/" path allows all the finance handlers to be configured as a group, in situations where that's desirable.
For example:
也许是轻微的错字?
vs.
不确定这是否是问题所在。
也许这个(添加到httpd.conf)
然后尝试该脚本。您也可以在那里创建一个空文件夹吗?
Slight typo perhaps?
vs.
Not sure if that is the issue.
Perhaps this (add to httpd.conf)
Then try the script. You could also make an empty folder there perhaps?