Wordpress - 删除#! URL中的字符

时间:2013-11-14 01:12:30

标签: php ajax wordpress

这个问题似乎很容易,但经过3天的搜索,我放弃了。我以为我会在这里找到它并且它似乎有相似的但它对这些东西不起作用。

目前,我的客户基于其先前的JS / AJAX驱动网站,拥有非常先进的营销方式。所有返回其网站的链接都是

  

服务器 /#! LINK

我已经构建了一个wordpress网站,我需要这样才能正确地交叉链接打开页面。

但如果我得到这个链接

  

服务器 /#! LINK

当Wordpress处理它时,我会得到以下网址

  

SERVER /

我已经探索过唯一的方法,或者至少我知道的唯一方法就是使用wordpress来实现它,但这似乎并不容易。

我有以下可以添加#的脚本!但需要删除(只是在某处找到)

<?php 
    $webSiteUrl = get_bloginfo('url')."/";
    $pageURL = 'http';
    if ($_SERVER["HTTPS"] == "on") {
        $pageURL .= "s";
    };
    $pageURL .= "://";
    if ($_SERVER["SERVER_PORT"] != "80") {
        $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
    } else {
        $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
    };
    if($webSiteUrl!=$pageURL){
        $pageHash = substr($pageURL, strlen($webSiteUrl), strlen($pageURL));
        header("location:".$webSiteUrl."#!/".$pageHash."");
        exit;
    };
 ?>

感谢 squeamish ossifrage 我几乎就在那里。 我使用了这个脚本,因为你提供的脚本有一些条件问题

if ('' !== window.location.hash && '#!' !== window.location.hash) {
  hash = location.hash.match(/^#!(.*)/)[1];
  /* ... do something with hash, like redirecting to */
  /* another page, or loading page content via AJAX. */
  /* If all you want to do is remove everything from */
  /* the URL starting with `#!', then try this:      */
  location.href = location.protocol+'//'+location.host+location.pathname;
}

它似乎有效,但我得到了根页。

e.g。我打开

myweb.com/#!thisone

我得到了

myweb.com/

并且只是为了概括所以有人可以节省大量时间 - 工作脚本是

if ('' !== window.location.hash && '!' !== window.location.hash) {
      hash = location.hash.match(/^#!(.*)/)[1];
      /* ... do something with hash, like redirecting to */
      /* another page, or loading page content via AJAX. */
      /* If all you want to do is remove everything from */
      /* the URL starting with `#!', then try this:      */
      location.href = location.protocol+'//'+location.host+location.pathname+'/'+hash;
    }

1 个答案:

答案 0 :(得分:1)

你不能在PHP中这样做,因为服务器永远不会看到URL的片段部分(即#符号及其后面的所有内容)。

您必须使用客户端Javascript。也许是这样的事情:

if /^#!/.test(location.hash) {
  hash = location.hash.match(/^#!(.*)/)[1];
  /* ... do something with hash, like redirecting to */
  /* another page, or loading page content via AJAX. */
  /* If all you want to do is remove everything from */
  /* the URL starting with `#!', then try this:      */
  location.href = location.protocol+'//'+location.host+location.pathname;
}

编辑:如果我理解正确,您希望将哈希值放在重定向网址的末尾。这很容易做到。只需将上述代码的倒数第二行更改为

即可
`location.href = location.protocol+'//'+location.host+location.pathname+'/'+hash;`

额外的'/'可能是不必要的;我会告诉你弄清楚细节: - )