2016-04-08 63 views
1

當我遇到一些奇怪的行爲時,我開始在我的網站上實現mod_rewrite規則。爲了這個測試,我刪除了我的htaccess文件,將其排除在等式之外。htaccess問題(「/ file /」服務file.php)

我的本地開發站點位於http://dev.mydomain.com,是一個虛擬主機。

如果我去,例如「http://dev.mydomain.com/blog/」,該文件夾不存在,但apache找到一個匹配的php文件「blog.php」,而是顯示該文件。

這隻有當匹配的PHP文件發生 - 當沒有,如「http://dev.mydomain.com/barfblurg/」我只是得到一個404

這就像有一些額外的mod_rewrites上述回事所在部位的htaccess會是 - 當/文件/無法解析,它搜索其他匹配的文件,而是服務於此 - 但沒有其他的htaccess文件會產生效果,所以這肯定是配置的東西?我看不到會導致此行爲的apache.conf或php.ini中的任何內容。

(這還沒有我的現場主持上發生在其他地方,所以它絕對是一個配置的事情。)

任何人點我在哪裏拐彎該行爲了,因爲它與URL重寫我想幹擾做?

(Apache2的,OSX,10.10.5)

回答

0

這種現象是由於使選項MultiViews的。

選項MultiViewsApache's content negotiation module運行以前mod_rewrite,使文件的Apache服務器匹配擴展使用。所以/file可以在URL中,但它將服務/file.php

要關閉此功能使用:

Options -MultiViews 

在您的.htaccess的頂部或在Apache的配置/虛擬主機文件。

+1

輝煌,就是這樣,謝謝。正在讓我瘋狂! :) – beely