2013-06-04 43 views
0

我有這個.htaccess文件:.htaccess爲什麼不重定向?

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

如果我的理解是正確的,它應該:

做什麼,如果有大小或符號鏈接的文件被創建, 重定向到index.php在任何其他情況下。

如果我打開www.mysite.com/folder/我得到index.php

如果我打開www.mysite.com/folder/file.php我得到了file.php

如果我打開www.mysite.com/test這不是一個folder既不是file我得到的404 error,但我應該得到的index.php。我的錯誤在哪裏?

回答

1

爲什麼不把它轉過來讓它更簡單?

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l 
RewriteRule ^.*$ index.php [NC,L] 

這應該所有文件(內容)和符號鏈接重寫的index.php,什麼也不做任何事情一樣。 線較少,不易混淆。

+0

謝謝,我需要相反的。所以,而不是'-s -l',是'!-s!-l'是正確的解決方案嗎? 還有一個問題:爲什麼你的解決方案,如果我直接指向我的文件(例如'www.mysite.com/folder/test.php')我得到這個文件,而不是'index.php'? – Perocat

+0

因此,如果它不是一個文件的內容,而不是一個符號鏈接,你想重定向到index.php?在那種情況下,是的。 –

+0

是的,我這個文件有內容,是一個符號鏈接,然後我想這個文件,否則index.php。我編輯了我以前的評論 – Perocat