WordPress页面上命名锚点的漂亮URL

时间:2017-05-30 00:12:39

标签: wordpress .htaccess mod-rewrite

我正在使用一个WordPress网站,其中服务页面是一个长页面,每个部分都有锚点。

www.mysite.com/services/#human-resources按预期跳转到人力资源部分。

.htaccess文件中有没有办法让网址如www.mysite.com/services/human-resources/直接跳到锚点?

我尝试了几种不同的重写规则,我得到的最接近的是:

RewriteRule services/human-resources services/#human-resources [NE,L,R=301]

但是这显示了url中的#,它击败了目的。删除R=301只会导致它无效。

感谢。

1 个答案:

答案 0 :(得分:0)

我一直在研究类似的网站,这就是我解决这个问题的方法。

首先将此操作添加到functions.php,将用户重定向到页面上的正确锚点。

function url_handler(){
  $path = substr($_SERVER['REQUEST_URI'], 1); //get the path minus the '/'
  if( is_page() || is_404() ){ // do you own conditional tags
    wp_redirect( home_url("#" . $path) ); //redirect to the #anchor
    exit();
  }
}
add_action( 'template_redirect', 'url_handler' );

接下来,你需要让一个javascirpt处理程序获取页面的url(带锚点的url)并使正确的事件滚动到该部分。像这样:

var hash = window.location.hash;
hash = hash.replace('#','');
hash = hash.replace('/','');
/* do stuff here */

希望这有帮助