apache:在 mod_rewrite 的 RewriteCond 中将字符串文字添加到 TestString 中

apache:在 mod_rewrite 的 RewriteCond 中将字符串文字添加到 TestString 中

所以我可以清楚地做到这一点:

RewriteCond %{REQUEST_FILENAME}\.php -f

但我不能这样做:

RewriteCond some_directory/%{REQUEST_FILENAME}\.php -f

此外,这也失败了:

RewriteCond prefix%{REQUEST_FILENAME} -f

当然,假设这些文件存在于目录中(废话!)。显然,我无法在 Apache 2.4 中的 RewriteCond 节中将文字字符串添加到 TestStrings 的前面

有人知道怎么做吗?谢谢。

笔记:在字符串文字前面添加内容的方式与在字符串文字后面添加内容的方式相同。我错误地将这个问题归咎于语法限制。事实是“REQUEST_FILENAME”扩展为完整的 unix 路径,而不是我最初认为的 HTTP 请求路径。

tl;dr 没有为字符串文字添加前缀的特殊语法规定;它们的工作方式与在 shell 脚本中相同,prefix%{variable}postfix是有效的语法。

谢谢你的时间。

答案1

之所以不起作用,是因为 %{REQUEST_FILENAME} 是文件的完整路径(请参阅http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecond)。如果我理解正确,我认为您要完成的任务是,使用 RewriteCond 反向引用在多个条件下完成此任务。我没有测试过,但我认为应该是以下情况:

RewriteCond %{REQUEST_FILENAME} (.*)/([^/]+)$
RewriteCond %1/prefix/%2 -f

相关内容