2015-06-09 47 views
1

我有一個奇怪的問題。這裏是我的htaccess文件中的一個URL重寫的兩個例子。第一個不起作用,並在PHP文件中返回「query」的變量爲null。當路徑與文件名稱相同時htaccess重寫不起作用

RewriteRule ^search/([A-Za-z0-9-\s]+)$ search.php?query=$1 

第二個(我用作測試)工作得很好。

RewriteRule ^foo/([A-Za-z0-9-\s]+)$ search.php?query=$1 

我發現問題是,模式的開始不能與我使用它的php文件的名稱相同。這一直對我有用,而且我現在只是遇到了這個問題,因爲我已經搬到了新的服務器上。

是否有某種導致此問題的設置?

+0

這是wordpress嗎? Cuz,wp不喜歡你使用某些詞,搜索是其中之一。如果您使用/ search/somekeyword,wp可能已經在使用/ search/ –

+0

@DougCassidy不,它不是wordpress或任何其他CMS /框架。 – Thomas

+1

它似乎是Multiviews問題 – Deadooshka

回答

1

您需要將這一行對你的.htaccess的頂部關閉MultiViews選項:

Options -MultiViews 

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

+1

謝謝!完全忘記了MultiViews。必須在此服務器上設置爲默認值。 – Thomas

相關問題