从没有散列的 URL 重定向到有散列的 URL
Redirect from a URL without a hash to a URL with a hash
在 Apache 上,我想使用 .htaccess 创建 URL 重定向规则。
预期传入URL将根据以下模式形成:
[PROTOCOL]://[domain name]/i/[INTEGER]/[INTEGER]/[STRING]
我希望将上面的URL重定向,这样现在URL中就有了一个hash,如下:
[PROTOCOL]://[domain name]/i/
#/[INTEGER]/[INTEGER]/[STRING]
例子
我想去...
来自:
https://example.com/i/92/17/abcdef
对此:
https://example.com/i/#/92/17/abcdef
重要提示: 浏览器不得去除重定向 URL 中的散列。 我需要那个哈希值。
我为什么要这样做?因为原始传入 URLs(没有哈希)的路由实际上并不存在。我需要 javascript 检查散列后出现的项目,并使用它们从浏览器向 API 服务器发出提取请求。这是必要的,因为我的主机上只有静态 HTML 文件。我还想要一个不包含主题标签的美观的传入 URL(即使它将被重定向到带有主题标签的 URL)。
问题是,如何使用位于 https://example.com/i/
子目录中的 .htaccess
文件实现此目的?
使用 /i
子目录中 .htaccess
文件顶部的 mod_rewrite:
RewriteEngine On
RewriteRule ^\d+/\d+/[^/]+$ /i/#/[=10=] [NE,R=302,L]
由于 .htaccess
文件位于 /i
子目录中,因此 RewriteRule
模式 (第一个参数)与 [INTEGER]/[INTEGER]/[STRING]
URL-path 的一部分(即相对于包含 .htaccess
文件的目录)。
[=18=]
反向引用包含与 RewrietRule
模式 .
匹配的整个 URL-path
需要 NE
标志以防止 #
在重定向响应中成为 URL-encoded(如 %23
)。
参考:
在 Apache 上,我想使用 .htaccess 创建 URL 重定向规则。
预期传入URL将根据以下模式形成:
[PROTOCOL]://[domain name]/i/[INTEGER]/[INTEGER]/[STRING]
我希望将上面的URL重定向,这样现在URL中就有了一个hash,如下:
[PROTOCOL]://[domain name]/i/
#/[INTEGER]/[INTEGER]/[STRING]
例子
我想去...
来自:
https://example.com/i/92/17/abcdef
对此:
https://example.com/i/#/92/17/abcdef
重要提示: 浏览器不得去除重定向 URL 中的散列。 我需要那个哈希值。
我为什么要这样做?因为原始传入 URLs(没有哈希)的路由实际上并不存在。我需要 javascript 检查散列后出现的项目,并使用它们从浏览器向 API 服务器发出提取请求。这是必要的,因为我的主机上只有静态 HTML 文件。我还想要一个不包含主题标签的美观的传入 URL(即使它将被重定向到带有主题标签的 URL)。
问题是,如何使用位于 https://example.com/i/
子目录中的 .htaccess
文件实现此目的?
使用 /i
子目录中 .htaccess
文件顶部的 mod_rewrite:
RewriteEngine On
RewriteRule ^\d+/\d+/[^/]+$ /i/#/[=10=] [NE,R=302,L]
由于 .htaccess
文件位于 /i
子目录中,因此 RewriteRule
模式 (第一个参数)与 [INTEGER]/[INTEGER]/[STRING]
URL-path 的一部分(即相对于包含 .htaccess
文件的目录)。
[=18=]
反向引用包含与 RewrietRule
模式 .
需要 NE
标志以防止 #
在重定向响应中成为 URL-encoded(如 %23
)。
参考: