【问题标题】:How to prevent canonical URL's如何防止规范 URL
【发布时间】:2016-04-06 14:56:06
【问题描述】:

我在home.php 上有一个锚链接,它链接到这个:

<a href='#?id=$thought_id' class='toggle-comment' data-id='$thought_id' '> Comments ($num_of_comments) </a>

当悬停在这个锚链接上时,我希望看到这样的结果:

localhost/#?id=210

但我得到的是这个:

localhost/home.php#?id=211  

我看到了一个类似的问题here:但是,应用了最佳答案的建议后,我仍然得到相同的结果。我在profile_page.php 上也有完全相同的锚链接,它在那里完美运行。

锚链接并不意味着去任何地方,点击时,它会动态放大它下面的div,显示cmets。

编辑:

锚链接的工作原理:

  1. 单击时,锚链接会展开其下方的 div。单击时,会出现此 div:echo "&lt;div id='toggleComment$thought_id' class='new_comment'&gt;";

  2. 然后对于添加到此 thought 的每个新评论,另一个 div 会被回显

    &lt;div class='new_comm' id='thoughtId".$thought_id."-childId".$comment['id']."'&gt;

JavaScript 来实现这一点:

$(function() {
    $("a.toggle-comment").on("click", function(event) {
        // prevents browser to go to href's #
        event.preventDefault();
        // uses Jquery's data() function to get comment id from link's data-id attribute
        var id = $(this).data('id');       
        // get element by id and toggle display
        var ele = document.getElementById("toggleComment" + id);
        $(ele).toggle();
    });
});

编辑 2:

在聊天中与 Rocki 得出结论。问题是我定义了两次 JavaScript,一次是在 home.php 的源代码中,一次是在 functions.js 中,它也在 home.php 的 head 中。从源代码中删除脚本,代码开始运行。

【问题讨论】:

    标签: javascript php html


    【解决方案1】:

    # 后面的所有内容都被解释为哈希片段,不会发送到服务器。相反,您的浏览器会更改当前页面的哈希片段。

    RFC 2396:统一资源标识符 (URI):通用语法

    字符“#”被排除在外,因为它用于分隔 URI 来自 URI 引用中的片段标识符(第 4 节)。

    https://www.rfc-editor.org/rfc/rfc2396

    【讨论】:

    • 抱歉回复晚了。我仍然无法理解为什么这个问题出现在一个页面上,而不是出现在另一个页面上,其中存在完全相同的代码?
    • profile_page.php 是否包含在index.php 中?浏览器在地址栏中显示的内容很重要。
    • 抱歉,您所说的被index.php 收录是什么意思?此外,index.php 和 home.php 的唯一链接是,当用户成功登录时,它会将他们带到 home.php (header( "Location: home.php" );)
    • 很多 php 应用程序使用 index.php 将请求分派到正确的处理程序(调度程序/路由器模式)。简化示例:switch($_GET('site')) { case 'home': include('home.php'); break; ... }
    • 嗯,我真的不知道该说什么,这是我第一次遇到 URL 路由和调度。另外,我不知道你是否在问我是否在index.php 中使用过这两种方法。这和我的.HTACCESS 文件有关系吗?
    【解决方案2】:

    使用

    <a href='/#?id=$thought_id' class='toggle-comment' data-id='$thought_id' '> Comments ($num_of_comments) </a>
    

    改为(在您的网址之前添加 /)

    【讨论】:

    • 我试过了,但由于某种原因,当我点击链接时,它会注销我并将我发送到index.php。
    • 所以您正在使用其他一些修改了某些内容的 javascript,因为通常这就是 url 的工作原理!
    • 是的,如前所述,当点击链接时,它下面的 div 会展开。我已经使用 JavaScript 来实现这一点,并将更新我的问题以显示我的 JavaScript。
    猜你喜欢
    • 2021-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多