Apache 配置重写:“无法执行..没有此文件或目录”

Apache 配置重写:“无法执行..没有此文件或目录”

我已经将一些重写从 .htaccess 移至我们的 vhost_ssl.conf 文件。除了使用我们电子商务平台的重写外,大多数都运行良好。

我们使用 Miva Merchant 作为我们的电子商务平台,它使用自己的 .mvc 文件处理程序。当我重写 .mvc 文件时,Apache(或 nginx 等)会抱怨...

AddType application/x-miva-compiled .mvc
Action application/x-miva-compiled /cgi-bin/mivavm

RewriteCond %{REQUEST_URI} ^/t3
RewriteCond %{REQUEST_URI} (/$|\.)
RewriteRule (.*) /mm5/merchant.mvc

当我访问 example.com/t3/ 时浏览器中的结果:

无法执行“t3/”:没有此文件或目录

重写为 .htm 或 .php 等“普通”文件就可以了。我对这类事情的理解有限,但它似乎对我来说,服务器不理解如何处理 .mvc 目标文件..?任何建议都值得赞赏!

编辑:只是想指出,直接访问 .mvc 文件可以正常工作,因此服务器确实知道该做什么。重写似乎有些让人困惑。

答案1

事实证明我的重写需要PT添加(passthrough)标志,例如:

RewriteCond %{REQUEST_URI} ^/t3
RewriteCond %{REQUEST_URI} (/$|\.)
RewriteRule (.*) /mm5/merchant.mvc [PT]

我们的 cgi-bin 目录中有一个 ScriptAlias,这使得该PT标志成为必需。该PT标志隐含在 .htaccess 文件中,但不在 vhost 中。请参阅https://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_pt了解详情。

相关内容