2015-06-29 90 views
1

我有以下.htaccess文件。它拒絕訪問以下網址結構:簡單.htaccess重寫規則不起作用

www.example.com/test

即使它訪問該罰款:

www.example.com/test.php

我已經使用這個文件運行了一些更復雜的重寫規則,它工作得很好。例如:?

重寫規則^測試/([0-9] +)/ $ /tests_page.php?id=$1 [PT,L,QSA]

我不明白這怎麼可能發生。我在這裏錯過了什麼?

#OPTIONS 
Options -Indexes 
Options +FollowSymLinks 

#ACCESS TO THE .HTACCESS FILE 
<Files .htaccess> 
order allow,deny 
deny from all 
</Files> 

#REWRITE ENGINE 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteEngine On 

#PAGES REWRITE 
RewriteRule ^test/?$ /test.php 

更新:

我改名爲tests.php文件,並改變了規則,這和它的工作:

重寫規則^測試/ $ /tests.php

這仍然不能解釋爲什麼發生這種情況,雖然

爲什麼我不能讓url文件夾名稱與文件名匹配?

+0

你有一個名爲「test」的目錄嗎?當您嘗試訪問/測試時會發生什麼? – nomve

+0

@nomve沒有名爲/test/.....的文件夾我收到此消息:未找到 未在此服務器上找到請求的URL /測試。 Apache/2.2.22(Debian) –

+0

問題通常是我知道一些我可以測試的東西。我可以刪除一些代碼或其他東西。有了這個,我陷入了死衚衕。 –

回答

2

這似乎是MultiViews選項的問題。通過使用:

Options -MultiViews 

行在您的.htaccess頂部。選項MultiViewsApache's content negotiation module使用,它在mod_rewrite模塊之前運行,並使Apache服務器匹配文件擴展名。所以/file可以在URI中,但它將服務於/file.php