2015-08-28

mod_rewrite 的寫法(以 Zend Framework 為例)

Rewrite Configuration Guide - Recommended Project Structure for Zend Framework MVC Applications - Zend Framework 提供給 .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]

簡單來說就是:除了有存在的檔案(-s)或([OR])符號連結(-l)或目錄(-d) 不做更動以外,其它都轉到 index.php 。其中:

  • - (第五行) 指不做變動
  • NC (No Case) 不分大小寫
  • L (Last) 若配對到此規則的話,就不重覆配對接下來的其它規則

若是轉址過來的話, $_SERVER 會多出三個變數:

$_SERVER["REDIRECT_URL"]
$_SERVER["REDIRECT_QUERY_STRING"]
$_SERVER["REDIRECT_STATUS"]

細節請參考:mod_rewrite - Apache HTTP Server Version 2.4

No comments:

Post a Comment