在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