我需要在.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]
我需要在.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]
简短的回答是:它根本不可能使用.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]
谢谢@anders tornblad –
这不是查询字符串。这是一个客户端的东西。这不起作用。你只能重写查询字符串或其他东西。 –