我認爲這是一個noob問題,但這裏有一點。GET變量和漂亮的URL
我想在PHP中更好地瞭解$ _GET變量。很多CMS的等轉換之類的東西site.com/?ID=42成類似site.com/42
我的問題是,會發生什麼,當這種情況發生的$ _GET變量?我嘗試在頁面加載時打印GET數組,並且它是空的。
我認爲這是一個noob問題,但這裏有一點。GET變量和漂亮的URL
我想在PHP中更好地瞭解$ _GET變量。很多CMS的等轉換之類的東西site.com/?ID=42成類似site.com/42
我的問題是,會發生什麼,當這種情況發生的$ _GET變量?我嘗試在頁面加載時打印GET數組,並且它是空的。
如果您將參數傳遞這樣一來,他們將不再是GET變量,因爲它們不使用傳統的?
GET語法通過。它們只是URL的一部分,將由您正在使用的「CMS」框架進行解析。
但是,如果你偶然路過一個「傳統」 GET變量,想讀它的服務器上,你就必須諮詢CMS的文檔。如果框架要使用漂亮的URL,它可能也會刪除任何GET變量,因爲它們不再是必需的。例如,CodeIgniter MVC框架(不是自己的CMS,但可能用於構建它們)執行此操作。
你可以做這樣的事情site.com/42並通過添加適當的重寫規則保留ID = 42的GET變量。使用mod_rewrite
基本上
RewriteEngine On
RewriteRule ^(.*) /?id=$1 [L]
他們做的方式:例如,假設你正在運行的Apache Web服務器,你可以用下面的修改您的.htaccess文件(位於webroot的目錄)你的網絡服務器「重寫」 URI請求別的東西,所以你必須傳入的請求像
http://your.site.com/Page/arg1/arg2/arg3
但隨着你的重寫規則,你必須符合這一格式的阿帕奇反過來請求(開往/頁的所有請求)到:
http://your.site.com/Page?a=arg1&b=arg2&c=arg3
你會後來終於在PHP中有$ _GET [ '一'],$ _GET [ 'B']和$ _GET [ 'C']都設置爲值。
的一點是,它不是一個GET變量了,變量只是成爲URL的一部分。這些URL然後由應用程序自定義分析。大多數的MVC框架遵循/controller/action/params
規則和向下突破的URL根據零件的位置:
/controller
部分確定要使用的控制器/action
部分決定調用/page:2
的參數,因此它們不必依賴於正確的順序這些都可以定製。您還可以使用您的Web服務器(例如Apache)將這些類型的URL重寫爲良好的舊GET參數URL,然後再打到您的應用程序。