繁体   English   中英

带有Wordpress主题的URL中的#问题?

[英]Issue with # in URL with a Wordpress theme?

我遇到了一个严重的问题,并且不知道发生了什么......我将指出导致此Wordpress驱动的门户网站出现多个问题的一般问题。

重现步骤:

  1. 访问网址: http//gamersgeographic.com/en/ (或本网站上的任何帖子)
  2. 将#abc或#anything附加到URL
  3. URL尝试解析一秒钟并神奇地删除“#”而改为/ abc或/ anything,当然不存在并且找不到404页面。
  4. 即使存在#abc的本地锚点,行为也是一样的。

现在,考虑以下情况:

  1. 访问http://gamersgeographic.com/monster-hunter-diary-1/
  2. 评论链接附加#comments或#respond,具体取决于评论是否存在。
  3. 两个锚点都存在于单个帖子页面上
  4. 在发现它们之后仍然会重定向,发表评论并给出404
  5. 使用#comments的直接网址有效,例如http://gamersgeographic.com/monster-hunter-diary-1/#comments可以使用,但是当我将任何基本网址更改为#comments时,它会重定向到404 ...

我已经尝试过几种与永久链接的组合,所以这不是问题。 我甚至在php中编写了我自己的Comment链接生成器,只有一个简单的href="#comments"
但还是没有运气......

如果您需要有关theloop.php中任何函数代码的任何进一步信息或其他任何信息,请告诉我。

提前致谢 ! 问候

.htaccess的内容如下:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

这不是PHP问题,它是Javascript:当你重现它时很明显,你可以通过禁用Javascript并在URL的末尾添加#comments来测试它; 它会工作。

现在,我为你做了一些工作,罪魁祸首是一个名为hashchange.js的Javascript文件。 例如,看看这一行:

function second_passed() { 
    if(current_page!=location.href {
        get_page_by_hash(location.href);
    }
    setTimeout(second_passed,1000);
}

这解释了为什么你看到它“工作”一秒钟。

这是重定向:

jQuery(window).hashchange(function() {
    var link = window.location.hash.replace("#", "");
    get_page_by_hash(link)
});

请注意, hashchange是jQuery Mobile中可用的事件处理方法。

<link rel="canonical" href="URL OF YOUR HOMEPAGE HERE>  

将其添加到<head></head>部分的header.php中,然后尝试。 它不应该给404错误!

如您所知,页面书签的使用方式是锚点的href =“”指向#some-place。 为了实现这一点,#some-place必须是您希望转到的页面中元素的id。

例如:

http://gamersgeographic.com/monster-hunter-diary-1/#respond

应该带你到那个页面中id =“respond”的元素。

如果具有该ID的元素不存在,您将无法前往它,并且可能是导致404 Not Found的原因。 但是,如果元素确实存在于具有正确ID的页面上,并且仍然重定向到404,那么您可能需要检查Web服务器配置以确保它不以某种方式过滤#。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM