2014-09-05 121 views
2

我最近搬到了我的網站的新服務器,我激活了mod_rewrite成功,但有些文件仍然無法正常工作!Ubuntu服務器上忽略.htaccess文件

贊一個:

RewriteRule ^activate\/(.*)\/(.*)$ activate.php?Email=$1&hash=$2 

我已經對我的VPS(Ubuntu的)所有必要的修改!

有什麼想法?

像這樣的行工作得很好:

RewriteRule ^search\/(.*)\/([a-zA-Z0-9_-]+)$ search.php?view=$1&p=$2 
RewriteRule ^search$ searchResults.php 
RewriteRule ^term$ term.php 
RewriteRule ^faq$ faq.php 
# Non-working line... 
RewriteRule ^activate\/(.*)\/(.*)$ activate.php?Email=$1&hash=$2 

注意mod_rewrite的啓用和所有其他線路正常工作僅此一家!

+0

什麼其他線路運行良好替換您的htaccess當前的代碼?請始終發佈.htaccess的全部內容,因爲它與訂單密切相關。 – 2014-09-05 18:46:21

+0

'不工作'你能更明確嗎? – 2014-09-05 18:47:12

+0

請修改上面的內容以包含正確順序的所有重寫規則,併發布用於測試的具體示例URL(工作和非工作) – 2014-09-05 18:48:16

回答

1

首先,你必須定義一個RewriteBase,因爲你的兩個規則(第一個和最後一個)創建兩個虛擬目錄。

然後,您應該禁用MultiViews選項使termfaq規則工作沒有問題。

最後,你可以用更通用的方式重寫你的模式(或者至少以更好的方式,更精確)。此外,不要忘記每個規則後面的L標誌([L]),否則mod_rewrite將繼續評估下一個規則。

您可以通過這個(假設你的htaccess是在根文件夾)

Options -MultiViews 

RewriteEngine On 
RewriteBase/

RewriteRule ^search/([^/]+)/([^/]+)$ search.php?view=$1&p=$2 [L] 
RewriteRule ^search$ searchResults.php [L] 
RewriteRule ^term$ term.php [L] 
RewriteRule ^faq$ faq.php [L] 
RewriteRule ^activate/([^/]+)/([^/]+)$ activate.php?Email=$1&hash=$2 [L] 
+1

我愛你,你解決了我的問題:)在我的情況下,我有'Options + FollowSymLinks'在第一次,我修改它爲'Options -MultiViews'並解決它: ),但會採取你的建議,並作出重大變化:)謝謝你... – user3818090 2014-09-05 19:05:19