从没有哈希的URL重定向到有哈希的URL



在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(。

问题是,如何使用位于https://example.com/i/子目录中的.htaccess文件来实现这一点

/i子目录中的.htaccess文件顶部使用mod_rewrite:

RewriteEngine On
RewriteRule ^d+/d+/[^/]+$ /i/#/$0 [NE,R=302,L]

由于.htaccess文件位于/i子目录中,因此RewriteRule模式(第一个参数(与URL路径的[INTEGER]/[INTEGER]/[STRING]部分匹配(即相对于包含.htaccess文件的目录(。

$0反向引用包含与RewrietRule模式匹配的整个URL路径。

NE标志用于防止#在重定向响应中被URL编码(如%23(。

参考:

  • https://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule

最新更新