2014-12-13 67 views
2

使用RewriteEngine敘述在我的網站時的index.php不作爲我的索引文件,我有以下.htaccess文件有簡潔的網址:爲什麼在.htaccess

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 

這是偉大的工作,當用戶鍵入在hostname.com/filename,但它取消了自動重定向,當用戶瀏覽到hostname.com/map/,作爲RewriteEngine敘述的地圖,這給下面的結果後,會自動將.PHP:

https://hostname.com/map/.php 

有一種使用index.php作爲用戶瀏覽地圖時使用的索引文件的方式而不是文件,同時仍然對用戶瀏覽文件具有相同的效果?因此,預期的結果是基於3種選擇:

+0

我希望這是非常明顯的,這聽起來有點亂,當我再次閱讀問題。我會盡力改善它。 – 2014-12-13 00:20:03

回答

1

一般來說,如果配置自動使用index.php你只需要添加 後RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d 
+0

在我的示例中,是否應將示例中的-f更改爲-d?或者在給定示例下面添加-d的條件? – 2014-12-13 00:25:27

+1

非常感謝你,這似乎解決了這個問題!正如你所建議的那樣,我現在正在使用這兩種條件,但是它似乎只是將我的示例中的條件更改爲您的版本(使用-d),是否有任何理由說明爲什麼這似乎也適用,或者爲什麼我不應該使用它? – 2014-12-13 00:26:55

+0

使用'-f'測試一個文件是否存在相同名稱,並且在這種情況下不添加'.php'。用'-d'測試目錄。測試兩者都是一個好主意。你可以閱讀更多信息:http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond – Croises 2014-12-13 00:30:53