哈希(#)标记重定向在htaccess中

时间:2015-02-05 10:41:06

标签: php apache .htaccess mod-rewrite redirect

我想将旧网站网址重定向到新网址网址。我在.htaccess文件中写了一个重定向规则。但问题是,我的旧网址包含url参数之间的哈希标记。

Redirect /de/home/#/de/about/blog/ https://www.example.com/about/blog/

我尝试的所有内容都会忽略哈希标记,并且根本不会重定向。我的旧域名具有相同的主机,重新设计后,网址会有一些变化。这就是我想重定向旧网址的原因。

如果使用htaccess无法实现,还有其他方法可以实现吗?

或者我可以通过匹配网址的部分来使用没有哈希的网址吗? 我的意思是像这样重写;

重定向/(*)/ de / about / blog / https://www.example.com/about/blog/

你能帮我吗?提前谢谢。

3 个答案:

答案 0 :(得分:3)

片段标识用于标识文档的一部分,它完全由客户端处理,永远不会发送到服务器。

基于它的重定向的唯一方法是使用客户端JavaScript。

答案 1 :(得分:2)

您需要在客户端进行重定向:

    if (window.location.hash == "#/de/about/blog/") {
        window.location = 'http://google.com.ua';
    }

答案 2 :(得分:1)

使用htaccess是不可能的。来自# URL片段)的所有内容都不会发送到服务器。唯一的方法是使用JavaScript,这是很多人don't like hashbang的原因之一。

  

一旦你好了,你就不能回去了。这可能是最棘手的   问题。 Ben的帖子提出了当pushState更多的时候   广泛采用然后我们可以留下hashbangs并返回   传统的URL。嗯,事实是,你做不到。早些时候我说过URL   它们是永远的,它们被索引和存档并且通常被保留。   除此之外,酷网址不会改变。我们不想断开连接   我们自己与我们内容的所有宝贵链接。如果你的话   在任何时候实现hashbang URL然后想要更改它们   没有断开链接,你可以做到的唯一方法是运行一些   您域名根文档上的JavaScript。永远。它没有   暂时的,你坚持下去。

您可以在此处找到一些有用的信息:What's the shebang/hashbang (#!) in Facebook and new Twitter URLs for?