2011-12-25 81 views
0

以mod_rewrite爲Apache服務器。 我不完全理解爲什麼我兩者都需要的RewriteRules此示例中:爲什麼我需要這兩個規則集?

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteRule ^$ public/ [L] 
    RewriteRule (.*) public/$1 [L] 
</IfModule> 

在這個DIY MVC教程最初發現,好像^$(.*)意味着同樣的事情。爲什麼我需要兩個[L] ast標誌,因爲第二個不應該開火,對吧? 我想深入瞭解所有內部機制,而不是僅僅複製工作解決方案。

回答

1

沒有,^$.*並不意味着同樣的事情:只有第一場比賽的空輸入,第二個會匹配任何 - 包括空輸入。第二條規則應該足夠了。

至於爲什麼會出現在這裏[L],考慮一個空請求,並沒有[L]

  • 第一條規則將會把請求轉換成public/;
  • 第二個會再觸發,並將public/轉換爲public/public/
+0

謝謝!你認爲更快:^(。*)$或只是(。*) – 2011-12-25 21:41:44

+0

這是一樣的,兩者將完全相同的事情。不要打擾那裏的錨;) – fge 2011-12-25 21:45:51