在 Apache 上,我想使用 .htaccess 創建 URL 重定向規則。
預期的傳入 URL 將根據以下模式形成:
[PROTOCOL]://[domain name]/i/[INTEGER]/[INTEGER]/[STRING]
我希望上面的 URL 被重定向,以便 URL 中現在有一個哈希,如下所示:
[PROTOCOL]://[domain name]/i/#/[INTEGER]/[INTEGER]/[STRING]
例子
我想去...
由此:
https://example.com/i/92/17/abcdef
對此:
https://example.com/i/#/92/17/abcdef
重要提示: 瀏覽器不得去除重定向 URL 中的哈希值。 我需要那個哈希。
我為什么要這樣做?因為原始傳入 URL(沒有哈希)的路由實際上并不存在。我需要 javascript 來檢查哈希后出現的專案,并使用它們從瀏覽器向 API 服務器發出獲取請求。這是必要的,因為我的主機上只會有靜態 HTML 檔案。此外,我想要一個美觀的傳入 URL,它不包含主題標簽(即使它將被重定向到帶有主題標簽的 URL)。
問題是,如何使用位于子目錄.htaccess中的檔案來實作這一點?https://example.com/i/
uj5u.com熱心網友回復:
在子目錄中的.htaccess檔案頂部使用 mod_rewrite :/i
RewriteEngine On
RewriteRule ^\d /\d /[^/] $ /i/#/$0 [NE,R=302,L]
由于.htaccess檔案位于/i子目錄中,因此RewriteRule 模式(第一個引數)與 URL 路徑的部分匹配[INTEGER]/[INTEGER]/[STRING](即相對于包含.htaccess檔案的目錄)。
反向參考包含與模式匹配的$0整個 URL 路徑。RewrietRule
需要該NE標志來防止在重定向回應中#被 URL 編碼(as )。#
參考:
- https://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/440151.html
