2014-02-17 29 views
1

在我的開發服務器上運行Windows上的xampp我的.htacess重寫規則工作正常。一旦我們去了運行Linux core 3.8.0-21-generiC#32-Ubuntu SMP Server version: Apache/2.2.22 (Ubuntu)的活動服務器,我們的規則不包含參數不再起作用,但是具有參數的規則正在運行。htaccess規則不工作在Linux服務器上

Options -Indexes 

    <filesMatch "\.(html|htm|txt|js|htaccess)$"> 
    FileETag None 
    <ifModule mod_headers.c> 
    Header unset ETag 
    Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate" 
    Header set Pragma "no-cache" 
    Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT" 
    </ifModule> 
    </filesMatch> 

    ErrorDocument 404 /404.php 

    RewriteEngine On  
    #Main site rules 
    RewriteRule ^login/?$ login.php [NC,L] 
    RewriteRule ^contact/?$  contact.php [NC,L] 

上述規則去contact.php和login.php不起作用。但是,這個更復雜的參數規則正在工作: RewriteRule ^game/([a-zA-Z0-9]+)/?$ handles/handle-game-select.php?name=$1 [NC,L]

兩個服務器環境之間是否存在導致這種情況發生的區別?

此外,它看來,如果我們做一些奇怪的事情,例如:RewriteRule ^contact.x contact.php [NC,L]我們能夠達到contact.php ......在這一個

很困惑。

謝謝你的幫助。

回答

1

我懷疑是由於啓用了MultiViews選項。添加在上面這行來禁用它:

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

謝謝。其他誰偶然發現這篇文章也可以:http://blog.razuna.com/2008/03/27/apache-htaccess-and-directive-multiviews/ – Vigs

+0

不客氣,很高興它解決了。 – anubhava

相關問題