去年在使用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
评论1
謝謝
謝謝!