2010-07-23 139 views
0

我想至少了解.htaccess如何工作。我使用從Zend框架的.htaccess(因爲我經常使用的多數民衆贊成)配置搜索引擎友好的網址(mod_rewrite)

SetEnv APPLICATION_ENV development 

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

第一行設置環境變量,確定簡單enuf,但什麼後續的行嗎?什麼是-s -l [NC,L]等。從apache docs我可以看到,

  • -s - 指「一個大小的常規文件」。只是好奇是否有一個非常規的文件?
  • -l - 是指一個符號鏈接 - 什麼是
  • -d - 指directiory
  • REQUEST_FILENAME - 完整的本地文件系統中的文件路徑或腳本符合要求
  • REQUEST_URI - 在HTTP請求中請求的資源線。

假設我瀏覽到「http://localhost/some/path/here」。 REQUEST_FILENAME & REQUEST_URI等於什麼?

反正,我現在解釋規則

  • 如果請求是與大小或
  • 一個文件,如果請求的是一個鏈接或
  • 如果請求是一個目錄
  • ...做些什麼...
  • RewriteRule ^.*$ - [NC,L]是做什麼用的?
  • 那麼我想航線一切匹配上面的index.php

回答

0

如果URL指向一個真實的文件/目錄/鏈接,服務網址是(第一重寫規則行不更改URL規則完全)。否則,重定向到index.php。

+0

第一個'RewriteRule'會做什麼嗎? – 2010-07-23 13:12:15

+0

第一條規則不會重寫URL,但會阻止使用第二個RewriteRule。因此,任何匹配RewriteConds的URL都不會被重定向到index.php。 – Sjoerd 2010-07-23 13:36:22