需要在 htaccess 中重写 URL contain # 标签
Need to rewrite URL contain # tag in htaccess
我需要在 .htaccess 中重写 URL?下面是我的问题的描述。
URL: www.example.com/about.php#vision
需要重写为:www.example.com/vison.html
我尝试了下面提到的方法,但它不起作用
RewriteRule ^vison.html$ about.php#vision [L]
RewriteRule ^our-vision.html(.*)$ about.php [L,NC]
简短的回答是:使用 .htaccess 根本不可能!
更长的答案:
#
字符后的部分不会从浏览器发送到 Web 服务器,因为它仅在客户端使用。
这种类型的 "rewriting" 必须使用客户端 JavaScript。
hashchange 事件可能是您的起点:
window.addEventListener('hashchange', function() {
var hash = location.hash.substr(1);
window.location.href = "/" + hash + ".html";
});
您还应该查看 SPA (单页应用程序)。有很多框架可以帮助您构建此类解决方案。此外,还有更多不依赖哈希的现代技术,例如 popstate 事件及其相关机制。
一些可以帮助您入门的框架:
更新
在查看您当前的 .htaccess 设置时,您似乎想要做与您的问题文本暗示相反的事情 - 当有人请求 vison.html
,您想将它们重定向到 about.php#vision
- 而 而不是相反 .
如果这是真的,那么是的,您可以通过添加 R
标志 (REDIRECT) 和 NE
使用 .htaccess 来实现标记 (NO ESCAPE) 以防止 #
字符被编码:
RewriteRule ^vison.html$ about.php#vision [NE,R,L]
我需要在 .htaccess 中重写 URL?下面是我的问题的描述。
URL: www.example.com/about.php#vision
需要重写为:www.example.com/vison.html
我尝试了下面提到的方法,但它不起作用
RewriteRule ^vison.html$ about.php#vision [L]
RewriteRule ^our-vision.html(.*)$ about.php [L,NC]
简短的回答是:使用 .htaccess 根本不可能!
更长的答案:
#
字符后的部分不会从浏览器发送到 Web 服务器,因为它仅在客户端使用。
这种类型的 "rewriting" 必须使用客户端 JavaScript。
hashchange 事件可能是您的起点:
window.addEventListener('hashchange', function() {
var hash = location.hash.substr(1);
window.location.href = "/" + hash + ".html";
});
您还应该查看 SPA (单页应用程序)。有很多框架可以帮助您构建此类解决方案。此外,还有更多不依赖哈希的现代技术,例如 popstate 事件及其相关机制。
一些可以帮助您入门的框架:
更新
在查看您当前的 .htaccess 设置时,您似乎想要做与您的问题文本暗示相反的事情 - 当有人请求 vison.html
,您想将它们重定向到 about.php#vision
- 而 而不是相反 .
如果这是真的,那么是的,您可以通过添加 R
标志 (REDIRECT) 和 NE
使用 .htaccess 来实现标记 (NO ESCAPE) 以防止 #
字符被编码:
RewriteRule ^vison.html$ about.php#vision [NE,R,L]