Some time ago I requested help with a rewrite rule to strip
    trailing slash(es) from all URLs in our joomla website, but I'm
    still having problems. This is the rule I am currently working with:

    RewriteRule ^(.*)/+$ https://linuxsecurity.com$1 [R=301,L]

    It works fine for any URL other than the homepage. Somehow for the
    homepage it creates an infinite loop, despite using "L", so
    perhaps I don't understand what it's doing. The (.*) is supposed
    to match any character, but there wouldn't be any preceding
    elements for the homepage.

    The problem as I see it is that, for the homepage, (.*) would be
    null, so $1 would also be null? This then creates the same URL as
    the one we're trying to fix.

    First it appears to work properly (trimmed for legibility):

    init rewrite engine with requested uri /
    applying pattern '^(.*)/+$' to uri '/'
    rewrite '/' -> 'https://linuxsecurity.com'
    explicitly forcing redirect with https://linuxsecurity.com
    escaping https://linuxsecurity.com for redirect
    redirect to https://linuxsecurity.com [REDIRECT/301]

    then it looks like it inits the rewrite engine again?

    init rewrite engine with requested uri /, referer:
    https://linuxsecurity.com/
    applying pattern '^(.*)/+$' to uri '/', referer:
    https://linuxsecurity.com/
    rewrite '/' -> 'https://linuxsecurity.com', referer:
    https://linuxsecurity.com/
    explicitly forcing redirect with https://linuxsecurity.com,
    referer: https://linuxsecurity.com/
    escaping https://linuxsecurity.com for redirect, referer:
    https://linuxsecurity.com/
    redirect to https://linuxsecurity.com [REDIRECT/301], referer:
    https://linuxsecurity.com/

    This just loops repeatedly until it dies. I've also made sure
    there's only one "RewriteEngine on" in the virtual host config and
    the .htaccess. Would that even matter?

    What am I doing wrong? I've tried a thousand variations of this to
    no avail.

You will need to stop using .htaccess files to prevent looping, as a first step.  Edit your vhost.

I've removed the .htaccess in the document root and there are no other Includes in the vhost. I've also tried adding [END] but none of it has made any difference.

RewriteRule ^(.*)/+$ https://linuxsecurity.com$1 [R=301,END]

I've also set logging to trace5 (even though none of the entries were above trace4) - shouldn't it provide me with enough info to determine where/why it's looping?

If I remove the one RewriteEngine statement in my vhost config, it's clear that it does not process any RewriteRules at all.

dave




Reply via email to