簡體   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