靜態url,用正則擷取URL參數進行路由好還是htacess重寫好?

來源:互聯網
上載者:User
大牛們都是怎麼做的,請指點下

菜鳥認為

htacess唯一的壞處就是 伺服器環境不支援htacess就傻眼了 win系統比較麻煩

正則擷取呢, 調用的時候比較麻煩

比如一個url http://xxx.com/音樂/流行歌曲/中文/22.html

這種結構的 看上去比較美觀 實際上 我只需要最後一個參數’22‘和倒數第二個‘中文’去查詢資料庫就可以,上級目錄可以通過parent值往上爬得到。

如果目錄深度不固定
如何擷取最後一個參數和倒數第二個?
$url = array_slice(explode('/',$_SERVER['REQUEST_URI']), 0);




回複討論(解決方案)

$url = "http://xxx.com/音樂/流行歌曲/中文/22.html";$pathinfo = pathinfo($url);var_dump($pathinfo['filename']);//22$dir = pathinfo($pathinfo['dirname']);var_dump($dir['filename']);//中文

當沒有 urlrewite 時,你的 /音樂/流行歌曲/中文/22.html 顯然是 404 的
於是你只用通過自己的 404 處理常式來處理
不過這又涉及到 網頁伺服器的設定了,圈子又繞回去了

對於
如何擷取最後一個參數和倒數第二個?
$url = array_slice(explode('/',$_SERVER['REQUEST_URI']), 0);
這樣不可以,你沒有弄清楚參數的用法
$url = array_slice(explode('/',$_SERVER['REQUEST_URI']), -2);
就可以了

通過正則控制偽靜態,這個是比較容易配置,適合程式碼片段。
.htaccess 伺服器必須支援rewrite,還有.htaccess檔案解析才有效。

$url = array_slice(explode('/',$_SERVER['REQUEST_URI']), -2);


還可以是負數啊, 學習了,多謝各位。

  • 聯繫我們

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

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

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.