diff -ruN apachesolr/apachesolr.module apachesolr_fixed/apachesolr.module --- apachesolr/apachesolr.module 2015-12-02 20:11:47.000000000 +0100 +++ apachesolr_fixed/apachesolr.module 2015-12-16 12:24:06.000000000 +0100 @@ -2797,7 +2797,7 @@ $get = array_diff_key($_GET, array('q' => 1, 'page' => 1, 'solrsort' => 1), $options['query']); $options['query'] += $get; - return '' . ($options['html'] ? $text : check_plain(html_entity_decode($text))) . ''; + return '' . ($options['html'] ? $text : check_plain(html_entity_decode($text))) . ''; } function theme_apachesolr_sort_link($vars) { diff -ruN apachesolr/apachesolr_search.module apachesolr_fixed/apachesolr_search.module --- apachesolr/apachesolr_search.module 2015-12-02 20:11:47.000000000 +0100 +++ apachesolr_fixed/apachesolr_search.module 2015-12-16 13:29:52.000000000 +0100 @@ -1587,7 +1590,7 @@ // Replace keys with their rawurlencoded value if (isset($fv['search_block_form'])) { $raw_keys = str_replace("/","%2f",$fv['search_block_form']); - $form_state['redirect'] = str_replace($fv['search_block_form'], $raw_keys, $form_state['redirect']); + $form_state['redirect'] = str_replace($fv['search_block_form'], rawurlencode(htmlspecialchars_decode($raw_keys)), $form_state['redirect']); } } diff -ruN apachesolr/plugins/facetapi/adapter.inc apachesolr_fixed/plugins/facetapi/adapter.inc --- apachesolr/plugins/facetapi/adapter.inc 2015-12-02 20:11:47.000000000 +0100 +++ apachesolr_fixed/plugins/facetapi/adapter.inc 2015-12-16 12:40:15.000000000 +0100 @@ -117,10 +117,10 @@ } } if (!$query || NULL === $query->getPath()) { - return $this->searchPath; + return rawurlencode($this->searchPath); } else { - return $query->getPath(); + return rawurlencode($query->getPath()); } }