2013-10-05 93 views
0

我有以下.htaccess文件,它應該將所有不存在的文件/文件夾重寫爲index.php。有人可以建議一種方法來調試爲什麼這不起作用嗎?當我去到一個不存在的文件夾時,我收到一個404未找到的頁面。調試htaccess重寫不起作用

RewriteEngine On 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule ^.*$ ./index.php 

當我訪問domain.com/ index.php文件顯示正確

.htaccess文件是在同一個目錄中的index.php

回答

0

你可以試試這個代碼:

RewriteEngine On 

RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule^/index.php [L] 
+0

感謝,但仍沒有運氣 –

+0

這是擺在與mod_rewrite的和的.htaccess DOCUMENT_ROOT啓用? – anubhava

+0

我會檢查,這是一個全新的服務器,所以可能是罪魁禍首 –

0

你試過這個嗎

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^.*$ /index.php [L] 

編輯 這裏張貼可能對您有用Tips for debugging .htaccess rewrite rules所有的

+0

不幸的是,仍然無法正常工作。也許我的問題比.htaccess文件的內容大 –

+0

首先需要確保啓用htaccess –

+0

檢查我的編輯,我已添加您可能會幫助的主題 –

1

首先,你必須確保mod_rewrite啓動和工作,否則你會越來越500 Internal Server Error

只需使用apache_get_modules()即可檢查。例如,

// File : test.php 
<?php 

if (in_array('mod_rewrite', apache_get_modules()){ 
    echo 'mod_rewrite is installed and ready to be used'; 
} else { 
    echo 'mod_rewrite is not installed'; 
} 

如果打印出mod_rewrite is installed and ready to be used,那麼你可以使用這樣的事情,

RewriteEngine On 

    # I guess you're missing RewriteBase 
    RewriteBase/

    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ index.php/$1 [QSA,L]