Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix routing of unclean URLs #129

Open
wants to merge 1 commit into
base: development
Choose a base branch
from

Conversation

nyanginator
Copy link

As discussed in #128, this pull request deals with 2 issues:

  1. Direct loading of an unclean URL fails to route properly. While the page loads, the URL of the browser remains unclean.
  2. 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:

  1. Course view URL
    (e.g. http://www.example.com/moodle/course/view.php?id=5)
  2. Course users URL
    (e.g. http://www.example.com/moodle/user/?id=5)
  3. Course users URL with "index.php"
    (e.g. http://www.example.com/moodle/user/index.php?id=5)
  4. Course index URL
    (e.g. http://www.example.com/moodle/course/?categoryid=2)
  5. Course index URL with "index.php"
    (e.g. http://www.example.com/moodle/course/index.php?categoryid=2)
  6. Module URL
    (e.g. http://www.example.com/moodle/mod/page/?id=5)
  7. Module URL with "index.php"
    (e.g. http://www.example.com/moodle/mod/page/index.php?id=5)
  8. Module view URL
    (e.g. http://www.example.com/moodle/mod/page/view.php?id=9)
  9. User profile URL
    (e.g. http://www.example.com/moodle/user/profile.php?id=11)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant