2015-04-22 47 views
0

我有一個.htaccess文件,不會找到一些php文件,但會找到其他人。例如,.htaccess不能與一些PHP文件

RewriteRule ^test$ test.php

會給404 not found

RewriteRule ^custom$ test.php

會工作。

對於將添加.php到URL末尾的規則,它是相同的。有任何想法嗎?

全部文件

RewriteEngine On 
RewriteRule ^test$ test.php #doesn't work 
RewriteRule ^custom$ test.php #works 

完整目錄(LS-A)

. .. .htaccess index.html test.php 

感謝。

+0

什麼網址,你在瀏覽器中輸入第一條規則? – starkeen

+0

只是[IP地址] /測試。喜歡與自定義測試它的作品,但測試測試dosn't – oliverjrose99

+0

請發佈您的完整htaccess包括其他規則 – starkeen

回答

3

請確保multiviews已關閉,以免造成任何有趣的業務嘗試匹配文件。另外總是使用[L],以便在滿足規則時停止處理規則。通過繼續運行其他規則,也可能導致問題下降。不要緊,如果你有一個尾隨斜線或不。良好的措施,你可以用條件檢查過,這樣,如果它不是一個真正的文件或者不是一個真正的目錄,將處理規則,你不會得到一個404

Options -MultiViews 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^test/?$ test.php [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^custom/?$ test.php [L] 
+0

耶,謝謝你的作品正確。 – oliverjrose99

+1

很好的解釋,1+。 –

0
RewriteEngine on 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ http://example.com/$1.php [L,R=301] 

這是我在我的網站上使用的添加尾部斜槓,我修改它添加.php代替。這是你想要的?

或這應該也

RewriteRule ^test test.php [L,R=301] 
RewriteRule ^custom test.php [L,R=301] 
+0

你正在回答哪個問題?我猜不是這個。 –

+0

以及爲什麼它應該工作?它具體做什麼? –

1

當存在在你的根目錄與規則名稱的文件/文件夾,並根據需要爲其不會工作。因爲輸入http://127.0.0.1/test會默認將其更改爲http://127.0.0.1/test/目錄。但與http://127.0.0.1/custom不符,所以請在規則中加上一個斜線。

RewriteEngine On 
RewriteRule ^test/$ test.php 
RewriteRule ^custom$ test.php 
+0

「當存在具有規則名稱的文件時,它不會按要求工作」或dir,更正,1+。 –