Dot-Htaccess

用 htaccess 重寫 URL 編碼的雜湊字元

  • October 14, 2019

我有一個使用雜湊 (#) 訪問不同頁面的單頁網站。

問題是一些 PDF 查看器破壞了我對雜湊字元進行編碼的連結,將其替換#%23,例如鍊接my.app.com/#product/22變為my.app.com/%23product/22.

我正在嘗試使用重寫 URL 的 htaccess 規則來糾正此問題:

RewriteEngine On
RewriteRule ^(.*)%23(.*)$ /$1#$2 [L,R=301,NE]

但它似乎不起作用,我該怎麼辦?

RewriteRule 模式與 %-decoded URL-path 匹配。因此,如果請求的 URL 包含%23(URL 編碼#),那麼您需要匹配模式#中的文字。否則,您的重定向似乎沒問題。RewriteRule

例如:

RewriteRule ^(.*)#(.*)$ /$1#$2 [L,R=301,NE]

NE此處需要( ) 標誌,noescape以防止替換#中的 URL 被重定向響應中的 URL 編碼。

測試前清除瀏覽器記憶體。並使用 302(臨時)重定向進行測試以避免記憶體問題。

引用自:https://serverfault.com/questions/987808