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