【问题标题】:Hash(#) tag redirect in htaccesshtaccess 中的 Hash(#) 标签重定向
【发布时间】:2015-04-05 04:20:03
【问题描述】:

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

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

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

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

或者我可以通过匹配 url 的一部分来使用不带哈希的 url 吗? 我的意思是这样重写;

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

你们能帮帮我吗?提前致谢。

【问题讨论】:

  • 你用的是什么HTTP服务器软件和版本?
  • 我正在使用 apache 服务器。
  • 您好我还有一个疑问,在 htaccess 中,我可以使用没有哈希的 url 吗?我的意思是像这样重写规则;重定向/(*)/de/about/blog/example.com/about/blog

标签: php apache .htaccess mod-rewrite redirect


【解决方案1】:

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

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

【讨论】:

  • 你能举一个这个javascript重定向的例子吗?
  • @ArunChandran 刚刚设置window.location
  • @Volodymyr Melnychuk 好的。但首先我们需要检查条件。正确的?你能给我一个示例代码吗?
  • @ArunChandran 看看我的回答
【解决方案2】:

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

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

【讨论】:

  • 嗨,谢谢。所以就我而言,我需要编写这样的代码; if (window.location.hash == "/de/home/#/de/about/blog/") { window.location = 'example.com/about/blog'; } 我说的对吗?
  • 是的,你也可以使用正则表达式
  • 好的。谢谢你的提示。
  • 您好我还有一个疑问,在htaccess中,我可以使用没有哈希的url吗?我的意思是像这样重写规则;重定向/(*)/de/about/blog/example.com/about/blog
  • 是的,请查看RewriteRuleRedirectMatch 指令。
【解决方案3】:

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

一旦你hashbang,你就不能回去了。这可能是最粘的 问题。 Ben 的帖子提出了当 pushState 更 被广泛采用,那么我们可以把 hashbangs 抛在脑后,回到 传统网址。好吧,事实是,你不能。之前我说过 URL 是永远的,它们会被索引和存档,并且通常会保留下来。 除此之外,很酷的 URL 不会改变。我们不想断开连接 我们自己从所有有价值的链接到我们的内容。如果你有 在任何时候实现 hashbang URL 然后想要更改它们 在不破坏链接的情况下,您可以做到这一点的唯一方法是运行一些 域根文档上的 JavaScript。永远。没有 暂时的,你被它困住了。

你会在这里找到一些有用的信息:What's the shebang/hashbang (#!) in Facebook and new Twitter URLs for?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-27
    相关资源
    最近更新 更多