2014-05-09 50 views
1

爲你們快速的問題。我的網站的基本文件結構如下:htaccess的RewriteEngine敘述引起子目錄發出

www.example.com

/

的index.php

otherFiles.php

./directory

index.php 

當前如果您要輸入example.com/directory它會重定向到我的404頁面。您必須輸入example.com/directory/index。我的假設是,對於每個目錄,默認頁面爲index,其中.php.html擴展名。我想我是錯的,所以我配置了目錄的.htaccess如下:

DirectoryIndex index.php 

但是,沒有取得任何進展。有什麼我失蹤?爲了澄清,我想要example.com/directory的URL來打開該目錄中的索引文件。這裏是我的萬能.htaccess

ErrorDocument 404 http://www.example.com/404 

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

編輯

所以,我在htaccess的註釋掉3個Rewrite命令,現在我的問題解決了。問題是,現在的PHP文件擴展名正在顯示。有沒有辦法在不影響默認索引頁的情況下包含重寫規則?或者是其他地方的問題?

回答

1

它看起來像404是由於目錄/directory.php不存在。因爲你的RewriteRule與只知道它是不是一個真正的文件(%{REQUEST_FILENAME} !-f)的條件執行,規則被錯誤地應用於目錄,試圖追加.php。它很容易固定用!-d

ErrorDocument 404 http://www.example.com/404 

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

現在,當被要求像/directory目錄,默認DirectoryIndex將被使用,不重寫將會發生。

+0

出於某種原因,這隻能對目錄和另一根php文件,其他頁面都導致404錯誤 – samrap

+0

沒關係,它只是用了很長的時間由於某種原因更新。謝謝! – samrap

相關問題