Apache-2.2

Apache配置重寫:“無法執行..沒有這樣的文件或目錄”

  • June 8, 2018

我一直在將一些重寫從 .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 文件可以正常工作,因此伺服器確實知道該怎麼做。似乎有關重寫的某些事情使事情變得混亂。

事實證明,我的重寫需要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

引用自:https://serverfault.com/questions/910222