Direct loading of an unclean URL fails to route properly. While the page loads, the URL of the browser remains unclean.
When loading an unclean URL with "index.php" in it, the page loads but the URL is rewritten with the Moodle directory appearing twice.
The html_head_setup_info()function in classes/url_rewriter.phpcontains $me = new moodle_url($ME), which prepends the Moodle directory (the path portion of $CFG->wwwroot) to $me. $MEalready has the Moodle directory as a prefix, so that is why the Moodle directory ends up appearing twice (e.g. http://www.example.com/moodle/moodle). Consequently, $me doesn't get the correct clean URL path.
The fix involves checking for the Moodle directory (specifically, the path portion of $CFG->wwwroot) in $ME. If present, remove it.
I've added a unit test in url_rewriter_html_head_setup_test.php for the following cases:
As discussed in https://github.com/brendanheywood/moodle-local_cleanurls/issues/128, this pull request deals with 2 issues:
The
html_head_setup_info()
function inclasses/url_rewriter.php
contains$me = new moodle_url($ME)
, which prepends the Moodle directory (the path portion of$CFG->wwwroot
) to$me
.$ME
already has the Moodle directory as a prefix, so that is why the Moodle directory ends up appearing twice (e.g. http://www.example.com/moodle/moodle). Consequently,$me
doesn't get the correct clean URL path.The fix involves checking for the Moodle directory (specifically, the path portion of
$CFG->wwwroot
) in$ME
. If present, remove it.I've added a unit test in
url_rewriter_html_head_setup_test.php
for the following cases:(e.g. http://www.example.com/moodle/course/view.php?id=5)
(e.g. http://www.example.com/moodle/user/?id=5)
(e.g. http://www.example.com/moodle/user/index.php?id=5)
(e.g. http://www.example.com/moodle/course/?categoryid=2)
(e.g. http://www.example.com/moodle/course/index.php?categoryid=2)
(e.g. http://www.example.com/moodle/mod/page/?id=5)
(e.g. http://www.example.com/moodle/mod/page/index.php?id=5)
(e.g. http://www.example.com/moodle/mod/page/view.php?id=9)
(e.g. http://www.example.com/moodle/user/profile.php?id=11)