您在這裡

Drupal 7的URL中+加号、&符号的編碼問題及解決

James Qi 在 2012年3月1日 - 23:46 發表

  去年在使用Drupal 6的時候,就發現用Pathauto自動生成的URL網站中,部分特殊字符會導緻頁面找不到,當時找到了解決辦法,記錄在這篇博文中《Drupal的Pathauto模塊生成帶有單引号、雙引号、反斜杠URL問題及解決》。

  最近在使用Drupal 7的時候又遇到類似問題,這次不是單引号、雙引号或者反斜杠,而是+(加号)和&(and符号)出了問題,自動的編碼變成了%2B和%26,在浏覽器中無法找到。如果手工修改為%252B和%2526則可以訪問。

  我在網上搜索了很多資料,找到Drupal 6的includes/common.inc中有個函數drupal_urlencode,在對應的Drupal 7中改為了函數drupal_encode_path,函數的具體内容也有所不同,我對Drupal 7的common.inc(應該可以不改這個core文件而是改自定義目錄下的文件,但我還沒有試用成功)做了點修改後可以解決:

/*
jamesqi 2012-2-29 use drupal6 drupal_urlencode
function drupal_encode_path($path) {
  return str_replace('%2F', '/', rawurlencode($path));
}
*/
function drupal_encode_path($path) {
  if (variable_get('clean_url', '0')) {
    return str_replace(array('%2F', '%26', '%23', '//','%2B'),
                       array('/', '%2526', '%2523', '/%252F','%252B'),
                       rawurlencode($path));
  }
  else {
  return str_replace('%2F', '/', rawurlencode($path));
  }
}

  也許有更好的解決辦法,我暫時還不知道,先把這個解決辦法記錄下來。頁面例子:

補充:上面的例子已經失效,我更改了網站設置,沒有在上面的站上繼續用pathauto

自由标簽:

回應

發表新回應

Plain text

  • 不允許使用 HTML 標籤。
  • 自動將網址與電子郵件地址轉變為連結。
  • 自動斷行和分段。