FleaPHP 開發指南 - A2. 使用 PATHINFO 和 URL 重寫

來源:互聯網
上載者:User
開發指南

FleaPHP 應用程式通過分析 URL 地址來確定要執行的控制器及動作,以及傳遞給動作方法的參數。

預設情況下,FleaPHP 應用程式通過

http://www.example.com/index.php?controller=test&action=benchmark&source=1

這樣的 URL 地址來訪問應用程式的每一個功能。但有時候你希望 URL 地址能夠更好看一點,例如上面的地址變為:

http://www.example.com/index.php/test/benchmark/source/1

或者

http://www.example.com/test/benchmark/source/1

要實現上述兩種效果,必須藉助 FleaPHP 對 PATHINFO 模式和 URL 重寫的支援。


PATHINFO

要使用 PATHINFO 模式來運行應用程式,只需要簡單的設定應用程式選項 urlMode 為 URL_PATHINFO 就可以了。

採用 PATHINFO 時,對於相對位址,必須改寫為使用 / 開頭的絕對位址。例如 css/style.css 應該寫為 /css/style.css,而 images/banner.jpg 要寫為 /images/banner.jpg。除了圖片、CSS 樣式表和 JavaScript 檔案外,對網站其他檔案的引用也要使用絕對位址。
這個要求同樣適用於 URL 重寫入模式。


URL 重寫

URL 重寫比起 PATHINFO 來複雜得多,而且有一些限制。

  • 目前 FleaPHP 對 URL 重寫的支援還很簡單,與 PATHINFO 相比僅僅是從 URL 地址中隱藏了 index.php 入口檔案的名字;
  • URL 重寫需要 Apache 的 mod_rewrite 模組支援(IIS 使用者可以使用一些商業軟體);
  • 必須配置 Apache 或者 .htaccess 檔案,以便啟用 mod_rewrite 模組;
  • 對於複雜的目錄結構,你不得不編寫更多的重寫規則。

好了,希望上面的話沒有嚇到你。那麼看看最簡單的情況:

RewriteEngine onRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ /index.php/$1 [L]

上面的重寫規則很簡單,首先是啟用 URL 重寫。然後是判斷請求的檔案是否已經存在。只有當請求的檔案不存在時才進行 URL 重寫。

把上述內容儲存到應用程式根目錄,檔案名稱為 .htaccess。

很奇怪,在 Windows 資源管理員裡面不允許你建立 .htaccess 這樣只有副檔名的檔案。所以你必須先將檔案儲存為其他名字,例如 app.htaccess。然後進入命令列視窗(通過開始菜單運行 cmd.exe 程式即可),輸入 ren app.htaccess .htaccess 命令來對檔案改名。

最後,修改應用程式設定的 urlMode 選項為 URL_REWRITE。


如何產生 URL 地址

在 FleaPHP 應用程式中,我們總是應該使用 url() 函數和 FLEA_Controller_Action::_url() 方法來產生 URL 地址。這樣不管 urlMode 選項怎麼設定,我們都可以確保應用程式產生可以工作的 URL 地址。

例如 url('test', 'benchmark', array('source' => 1)) 這樣的調用,在不同 urlMode 設定下,產生的 URL 地址也不同。

這種特性,可以避免因為應用程式修改了 urlMode 選項,而導致需要手工替換全部 URL 地址的問題。


更複雜的自訂 URL 地址

正在開發的 URL 路由功能,可以讓應用程式獲得完全的自訂 URL。例如

http://www.example.com/index.php?controller=article&action=view&article_id=123

可以用下面的地址來代替。不但好看,而且便於搜尋引擎索引檔案。

http://www.example.com/article/123


相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

11.11 Big Sale for Cloud

Get Unbeatable Offers with up to 90% Off,Oct.24-Nov.13 (UTC+8)

Get It Now >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。