2010-08-23 39 views
0

我正在用PHP應用程序中的htaccess。我想一些行爲是這樣的:htaccess/apache自動映射到php文件?

  1. 發送請求mydomain.com/login
  2. 有htaccess的攔截請求登錄併發送到index.php REF =登錄

但是我有嗎?所有設置和由於某種原因,它會自動發送mydomain.com/login請求直接login.php而不通過index.php。

我想也許這裏有一些干擾配置?僅供參考我的.htaccess看起來是這樣的:

Options +SymLinksIfOwnerMatch 
RewriteEngine On 
Options -Indexes 

RewriteRule ^news$ /index.php?ref=news [NC,L] 
RewriteRule ^login$ /index.php?ref=login [NC,L] 

新聞URL重寫工作正常,並把它路由通過的index.php ...但我沒有news.php和懷疑,如果我這樣做會有問題那裏。

我也很抱歉,如果這個問題是在錯誤的地方,我不知道它是否屬於超級用戶或serverfault。

回答

2

您可能已打開MultiViews。當您向服務器發送/login的請求時,在您的RewriteRule正確應用之前,它將被mod_negotiation處理。

由於MultiViews已啓用,且資源/login不存在,它會查找現有資源以將其映射到 - 在此例中爲/login.php。這稍後傳遞給您的RewriteRule指令,但由於它們正在查找原始URL,因此未找到任何匹配,並且不會執行重寫。

禁用MultiViews應該解決的問題:

Options -MultiViews