如何使用url中的div-id跳转到特定的帖子……结尾的斜杠是罪魁祸首吗?

时间:2010-09-14 作者:kevtrout

我网站上的一些链接将用户带到特定的帖子in context on a category page.

在非WP站点上,通过包括#example-div-id 在url中,如下所示:

http://www.example.com#example-div-id

But in a WP environment, this url isn\'t working:

http://www.example.com/?cat=15#post-170

这(错误地)将浏览器窗口跳转到页面的末尾。

But this does work...在页面加载和重新加载页面后手动删除尾部斜杠。浏览器窗口跳转到相应的div或post。

http://www.example.com?cat=15#post-170.

有人知道这是为什么吗?或者如何让WP消除尾部斜杠?删除尾部斜杠是否安全?

更新

我尝试使用下面的EAMann解决方案,实现了非常好的永久链接,以促进锚点跳转。所取得的成绩彻底打破了我的帖子顺序和排斥儿童的类别。我的导航是基于类别的。我不使用页面,但在导航中使用类别名称。每个“页面”实际上是一个类别档案,显示该类别中的帖子。我所读到的关于永久链接的内容,从%category%开始,我就避免使用永久链接。我当然也不想以年份或帖子id开始永久链接。这在我的网站上没有意义。

http://www.example.com/category/my-category 看起来比http://www.example.com/2009/my-category 当预期的假象是类别名称实际上是这个商业网站上的页面时。

So I\'d appreciate any other explanations why the anchor jumping isn\'t working.

更新#2

(回应EAMann在OP上的评论)我的网站是一个大部分显示静态内容的商业网站。有几个领域以公文包工作为特色,还有博客部分。该网站使用基于类别的导航。所有的网站内容都是以帖子的形式写的。每个帖子都与一个类别相关联,该类别决定了帖子的显示位置。使用创建站点导航菜单wp_list_categories(). 单击一个类别将打开一个类别存档,其中显示该类别中的所有帖子。

我目前正在使用默认的permalink结构
http://www.example.com/?cat=15 显示类别页面。

更新#3

经过进一步调查,我用来在页面顶部显示幻灯片的jQuery插件“innerfade”似乎是罪魁祸首。它与尾部斜杠无关。很抱歉走错了路。

如果我注释掉包含插件js文件的php,那么锚点跳转就可以正常工作。我猜一些javascript对页面内容的操作正在破坏跳转。我使用$(window).scrollTo();.

我感谢大家的时间。

2 个回复
最合适的回答,由SO网友:kevtrout 整理而成

正如我在更新我的问题时所说的。。。页面上的其他javascript与锚点跳转冲突。我实施了更多的js来解决冲突。url看起来几乎与以前一样,但在英镑符号之前插入了一个参数名,

http://www.example.com/?cat=15&hi=#post-170

但我使用jQuery Howto的\'plugin\' to get url parameters.

$.extend({
    getUrlVars: function(){
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf(\'?\') + 1).split(\'&\');

    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split(\'=\');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }

    return vars;
},
getUrlVar: function(name){
            return $.getUrlVars()[name];
        }
});
我检索分配给“hi”url参数的帖子编号,并滚动到具有相同id的帖子上方20px处。

 //\'hi\' var used to jump to anchor          
    var hi = $.getUrlVar(\'hi\');

    if  ( hi ) {
        //scroll to link or search results if url var \'hi\' is present
        $(window).scrollTop($(hi).position().top-20); 
上面的jquery插件代码和我的自定义代码放在我的javascript文件中,该文件包含在标题中。php

SO网友:EAMann

首先,我建议使用“pretty permalinks“超过默认的查询字符串结构。这将消除getgo中的大多数问题。它将http://www.example.com/?cat=15#post-170 URL到http://www.example.com/category/category-slug/#post-170 浏览器将正确移动到帖子在页面中的位置。

也就是说。。。是的,可以删除尾部斜杠。诀窍是在.htaccess 文件:

#remove trailing slashes
RewriteCond %{HTTP_HOST} ^(www.)?yourdomain\\.com$ [NC]
RewriteRule ^(.+)/$ http://%{HTTP_HOST}/$1 [R=301,L]
(这是从a Drupal tutorial 同样的道理……)

结束

相关推荐

如何将外部jQuery/Javascript文件与WordPress链接

因此,我使用Starkers作为我下一个WP主题的基础,我遇到了一个小问题,我在header.php 但是当我使用Firebug检查我的网站时,我注意到jquery被下载了两次,我做了一些挖掘,并注意到我不仅包括了文件,还包括了wp_head() 作用在尝试修复该问题时,我注意到头文件中有一条注释,该注释源于“210”主题:/* Always have wp_head() just before the closing </head> * tag of your theme, or