2012-10-02 41 views
0

我的問題簡單地說...的.htaccess不正確的路由

這個工程: RewriteRule ^foo http://google.com

但這並不: RewriteRule ^routing/? routing.php [L]

有名爲路由沒有目錄或文件名。請看這個問題的細節: .htaccess url routing subdirectory

由於問這個問題,我對.htaccess系統的理解已經顯着增加。我現在看到了,從我看到的一切看起來都很好。當使用foo時,改變這一行將重定向到谷歌,並只使用路由來呈現404錯誤。另外我相信routing.php在那裏並且工作。

任何建議,爲什麼這不工作?

回答

1

你知道嗎,我敢打賭,這是因爲你打開了Multiviews。嘗試:

Options -Multiviews 

在您的htaccess文件的最頂端。

+0

這樣做......什麼是-Multiviews? – Osman

+0

我已經得到它的工作之前,我看到您的評論通過使它正在尋找的字,foo或路由,不同於它路由到的php文件名。我注意到這個詞它尋找foo,然後路由到routing.php工作時,這個詞是路由,它是路由到routing.php它沒有工作,但與你給我的代碼行它一直工作無論。 – Osman

+0

@ user860869它是[mod_negotiation](http://httpd.apache.org/docs/2.2/mod/mod_negotiation.html#multiviews)的一部分,開啓後,apache會嘗試「猜測」某個URL路徑的資源映射到。在使用'routing'和'routing.php'的情況下,mod_negotiation會接管並自動嘗試將'routing'映射到'routing.php',這樣重寫規則就不會被應用。 –

1

您是否嘗試過沒有問號? 查看文檔,我不認爲你應該使用問號: http://httpd.apache.org/docs/current/mod/mod_rewrite.html嘗試一個$代替。

+0

是的,我嘗試過沒有?他說,如果谷歌重定向工作,那麼我有這個設置..讓我檢查確定。 – Osman

+0

$是一個小姐以及 – Osman

+0

我注意到的東西。如果我使用名稱是一個文件重定向(當有routing.php時如此路由),那麼它不起作用。所以'RewriteRule^foo routing.php [L]'不起作用。 – Osman