全省快速服務,舊屋翻修、廠房拆除等大小工程 價格透明線上可查,事後清運還原 | 推薦NO1搬家公司,免費紙箱,服務不打烊 打包家當不煩惱,落地不加價,歡迎來電預約估價 |
[php] Apache 的 mod_rewrite |
房東:張經理 發表時間:2015-11-01 | [檢舉] |
最近正想要重寫一套屬於自己實用的 PHP 框架,第一步重要的就是將 PHP 的 Reuqets 寫成一個有用的網址,讓這個新框架在未來變的比較實用。 如果你現在寫的PHP程式還在這網址寫成這樣: http://www.aaa.cvom/news.php?id=12345 或是在寫購物車時是這樣寫: http://www.aaa.com/product.php?id=123123 下單的購物車是這樣寫: http://www.aaa.com/shoppingcart.php http://www.aaa.com/pay.php http://www.aaa.com/payok.php 告訴你,這樣寫實在是爛透了!! 依照目前主流性的框架如 Ruby on Rails 、 Python 的 Django 在URL方式是這樣子做的: http://www.aaa.com/controller/action/id 因此應該要把那些很醜的URL給改成這樣: http://www.aaa.com/news.php?id=12345 => http://www.aaa.com/news/show/12345 http://www.aaa.com/product.php?id=123123 => http://www.aaa.com/product/show/123123 將結帳的程序給簡化: http://www.aaa.com/shoppingcart.php http://www.aaa.com/pay.php http://www.aaa.com/payok.php ===> http://www.aaa.com/shoppingcart/pay/123123 將apache的url rewrite 功\能開啟修改apache的httpd.conf設定檔,將 LoadModule rewrite_module libexec/mod_rewrite.so 這段設定打開。 <Directory /> Options Indexes FollowSymLinks AllowOverride all Order deny,allow allow from all </Directory> 比較關鍵的是 Options Indexes FollowSymLinks 跟 AllowOverride all 部分。 在 .htaccess 設定改寫規則Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteRule ^news/(.*)/(.*)$ index.php?controller=news&action=$1&id=$2 [L] RewriteRule ^product/(.*)/(.*)$ index.php?controller=product&action=$1&id=$2 [L] RewriteRule ^shoppingcart/(.*)$ index.php?controller=shoppingcart&action=$1 [L] 在 RewriteRule 就可以多寫幾行需要重寫的規則。 PHP 在網取得變數的方法實際上,你就可以照舊的方式來接受來自網址的變數: echo $_REUQEST["id"]; 只是,若是你在舊的開發專案要改成那樣子,則會在 .htaccess 裡寫很多行的變化規則。 則規則大概就是這樣: RewriteRule ^(.*)-([0-9]+)\\.html$ news.php?title=$1&id=$2 [L,NC] title=$1 對應 (.*) .htaccess的設定說明
規則表示式
參數
http://coding.memory-forest.com/apache-%E7%9A%84-mod_rewrite.html |
廣利不動產-板橋在地生根最實在--新板特區指名度最高、值得您信賴的好房仲 完整房訊,房屋、店面熱門精選物件,廣利不動產 優質仲介,房屋租賃、買賣資訊透明,交易真安心! 廣利不動產-新板特區指名度最高、值得您信賴的好房仲 您的托付,廣利用心為您服務 |