回答
重寫規則的部分細分如下:
重寫規則
表示此線路將是一個重寫規則,而不是重寫條件或其它重寫發動機指令之一^(。*)$
匹配從beggining^
所有字符(.*)
於該請求的結束$
/index.php/$1
該請求將被重寫,其中(.*)
在前面的示例中被替換爲$1
。[L]
這就告訴mod_rewrite的,如果在步驟2中的比賽模式,適用此規則爲「最後」的規則,也不再適用。
的mod_rewrite documentation真的全面,但無可否認很多涉水通過解碼這樣一個簡單的例子。
最終結果是,所有請求都將通過index.php
進行路由,這是在PHP的許多模型視圖控制器實現中看到的一種模式。 index.php
可以檢查請求的URL段(以及可能的請求是通過GET還是POST進行的),並使用該信息動態調用某個腳本,而腳本的位置不必與請求URI所隱含的目錄結構相匹配。
例如,/users/john/files/index
可能會調用存儲在腳本目錄中的名爲user_files.php
的文件中的功能index('john')
。如果沒有mod_rewrite,更傳統的URL可能會使用可讀性較低的查詢字符串,並直接調用該文件:/user_files.php?action=index&user=john
。
這將導致每個請求由index.php的處理,其中可以提取從$ _SERVER [「REQUEST_URI」]
所以,對於/富/棒的請求將被重寫的實際請求作爲/index.php/foo/bar
(我在這裏發表評論,因爲我還沒有對代表的評論答案)在meagar的回答
點#2似乎並不完全正確我。我可能會在這裏出現一個肢體(我一直在尋找幫助,我的.htaccess重寫......),我很樂意澄清,但這是來自RewriteRule上的Apache 2.2 documentation:
什麼是匹配?
該模式最初將與主機名和端口之後以及查詢字符串之前的URL部分進行匹配。如果您希望與主機名,端口或查詢字符串匹配,請分別將RewriteCond與%{HTTP_HOST},%{SERVER_PORT}或%{QUERY_STRING}變量一起使用。
對我來說,似乎是說,對於
的URL http:// some.host.com/~user/folder/index.php?param=value
將實際被匹配的部分是
〜用戶/文件夾/ index.php的
因此,這不匹配「從請求的開始^到結束$」的所有字符(。*),除非「請求」並不意味着我認爲它的作用。
- 1. 重寫.htaccess中的規則
- 2. .htaccess重寫規則
- 3. .htaccess重寫規則
- 4. Htaccess重寫規則
- 5. Htaccess重寫規則?
- 6. htaccess - 重寫規則
- 7. Htaccess重寫規則
- 8. .htaccess - 重寫規則
- 9. 在.htaccess中重寫規則
- 10. 多的htaccess重寫規則
- 11. htaccess的URL重寫規則
- 12. htaccess的重寫規則URL
- 13. htaccess的雙重寫規則
- 14. 重寫的.htaccess規則
- 15. 的.htaccess重寫規則和&&
- 16. 的.htaccess多規則重寫
- 17. htaccess的重寫規則
- 18. htaccess的重寫規則
- 19. htaccess的重寫規則
- 20. htaccess的重寫規則
- 21. htaccess的重寫規則
- 22. 的.htaccess 2重寫規則
- 23. 的.htaccess重寫規則
- 24. htaccess的重寫規則
- 25. 多的.htaccess重寫規則
- 26. .htaccess的重寫規則MVC
- 27. 的.htaccess - 重寫規則
- 28. 的.htaccess重寫規則,以
- 29. htaccess的重寫規則
- 30. htaccess的重寫規則?
是的,沒錯。 (也許這應該是它自己的問題?) – 2010-06-28 23:16:33
Apache將'%{REQUEST_URI}'變量定義爲(使用你的例子)'/〜user/folder/index.php'(儘管由於我不會進入的原因,爲'RewriteRule'評估刪除第一個'/')。所以我認爲它與整個「請求」是一致的。我之前的評論沒有意識到你的'REQUEST_URI'與Apache定義它的值不同步,抱歉。 – 2010-06-29 05:00:17
對不起,我的錯。我將從評論中編輯它。我猜我學到了什麼,並想與其他新手分享,除非你在RewriteCond中做了一些具體的事情,但實際上到達你的RewriteRule的內容不包括域和任何查詢參數。 – thoni56 2010-06-29 22:06:51