2016-04-23 50 views
0

我需要在.htaccess中重写URL?下面是我的问题的描述。需要重新编写包含#标签的URL在htaccess中

网址:www.example.com/about.php#vision

需要被改写为:www.example.com/vison.html

我想这是在下面所提到的,但它不起作用

RewriteRule ^vison.html$ about.php#vision [L] 
RewriteRule ^our-vision.html(.*)$ about.php$1 [L,NC] 
+0

这不是查询字符串。这是一个客户端的东西。这不起作用。你只能重写查询字符串或其他东西。 –

回答

1

简短的回答是:它根本不可能使用.htaccess!

较长的答案:

#字符后的部分不会从浏览器向Web服务器发送的,因为它是唯一使用的客户端。

这种“重写”必须使用客户端JavaScript进行。

hashchange事件可能是一个起点你:

window.addEventListener('hashchange', function() { 
    var hash = location.hash.substr(1); 
    window.location.href = "/" + hash + ".html"; 
}); 

你也应该看看SPAS的(单页的应用程序)。有很多框架可以帮助您构建像这样的解决方案。此外,还有更多的现代技术不依赖散列,如popstate事件及其周围的机制。

你上手一对夫妇的框架,可以帮助的:

更新

当寻找在当前的.htaccess设置,它看起来好像你想要做的与您的问题文本所暗示的相反 - 当有人请求vison.html时,您希望将它们重定向到about.php#vision-和而不是

如果这是真的,那么,则可以使用的.htaccess通过添加R标志(重定向),也是NE标志(NO ESCAPE)防止#字符被编码做:

RewriteRule ^vison.html$ about.php#vision [NE,R,L] 
+0

谢谢@anders tornblad –