2009-08-18 53 views
1
# BEGIN 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

# END 

我是htaccess的初學者,所以任何人都可以幫我描述一下這些代碼行是什麼意思?如何用htaccess控制請求

回答

4

更詳細一點:如果條件爲真

  • <IfModule mod_rewrite.c>
    一個<IfModule> block的內容僅處理。在這種情況下,只有在加載了模塊mod_rewrite的情況下,纔會處理所包含的指令。

  • RewriteEngine On
    RewriteEngine On需要啓用該目錄及其子目錄重寫引擎。

  • RewriteBase /
    RewriteBase /設置每目錄基URL路徑/。但是這隻有在URL路徑不是物理路徑時纔是必需的。

  • RewriteCond %{REQUEST_FILENAME} !-f
    這條件是:被請求的文件名(映射到文件系統中的請求的URL路徑)不能是一個普通的文件。

  • RewriteCond %{REQUEST_FILENAME} !-d
    同爲以前的,但它不能是一個存在的目錄。如果相應的條件都爲真與/index.php和替代它:

  • RewriteRule . /index.php [L]
    此規則將匹配任何非空URL路徑(無底座URL路徑的請求的URL路徑,更精確)。此外,它被標記爲最後一條規則,所以當應用規則時,當前規則處理將停在此處。

  • </IfModule>
    對口<IfModule …>

+0

這就是我要找的,謝謝你 – coderex 2009-08-19 05:33:32

2

.htaccess將重寫所有請求,除了存在於重寫庫(此.htaccess所在的目錄,看起來像)到/index.php中的目錄和物理文件。對於許多框架和內容管理系統來說,這是一個相當標準的做法,可以實現「漂亮」的URL(比如你可以看到Stack Overflow)。

您可能也有興趣mod_rewrite docs