Apache Adds Trailing Slash Despite RewriteRule

5,284

As determined in the comments above, the DirectorySlash directive controls this particular Apache behaviour and the rewriterule did not cause it. This directive defaults to on. If you set it to off, then when a URI that maps to a directory on the file system is requested without a trailing slash, Apache will not redirect the request to one with a trailing slash.

More information in the documentation here: https://httpd.apache.org/docs/current/mod/mod_dir.html#directoryslash

Share:
5,284

Related videos on Youtube

sidyll
Author by

sidyll

Updated on September 18, 2022

Comments

  • sidyll
    sidyll almost 2 years

    I'm using a simple .htaccess to handle everything with a PHP script:

    RewriteEngine on
    RewriteRule . index.php
    

    My index.php just echoes server variables at the moment (with a print_r($_SERVER)); Everything works fine, I type anything in the URL and the index.php contents are shown. However, considering this structure:

    test/           # document root
      folder/       # empty folder
      index.php
      .htaccess
    

    I noticed that accessing [site]/folder first redirects the browser to [site]/folder/ and then shows the proper index.php contents. Why is this happening? Isn't the rewrite rule supposed to redirect everything "as is"?

    This is being used with virtual host set up to test a website locally. Configured with the bare minimum. Could there be other apache files being loaded prior to my .htaccess?

    <VirtualHost *:80>
        ServerName test.local
        DocumentRoot /Library/WebServer/Documents/test/
    </VirtualHost>
    

    Using OS X 10.10 currently.