Apache – How to Disable DirectorySlash for Specific Subdomain Requests

.htaccessapache-2.4mod-rewriterewrite

Served by Apache I'd like on one subdomain site of mine (say sub.mydomain.com) that URLs without trailing slashes point directly (without external redirect) to the index file in the underlying folder. The subdomain requests are internally redirected to a sub-folder. All other URLS should work in the normal Apache way with external redirect to the slashed version.

All the directives have to go in my .htaccess file. For this to work I am planning to do the following:

  1. Switch off DirectorySlash for requests to sub.mydomain.com/...
  2. Rewrite the sub.mydomain.com/… requests to /sub/...
  3. Rewrite slashless directory URLs with /sub/... to fetch the index.html inside the underlying directory

I have a good idea how to do 2. and 3., but how can I issue DirectorySlash off only for requests to sub.mydomain.com, but not to www.mydomain.com or other.mydomain.com?

Best Answer

By the sounds of it, your sub subdomain maps to the same directory as the main domain and all other subdomains (www and other, etc.)

However, if all requests to the sub subdomain are internally rewritten to the /sub subdirectory then you can presumably just create another .htaccess at /sub/.htaccess in which you set DirectorySlash Off - this then applies to all requests to the sub subdomain. (Assuming you don't also access the same subdirectory via a different hostname. You can prevent this if you wish.)

The /sub/.htaccess file is also where you would be implementing #3 in your requirements.

The root .htaccess file simply rewrites all requests to the sub subdomain to the /sub subdirectory.


Aside: Since you are asking this question on ServerFault it is generally assumed that you have full control of the server. In which case it would be preferable to configure this sub subdomain in its own vHost container that points directly to the /sub subdirectory (or somewhere outside of the main domains directory tree ideally). In this case, you would not need to implement #2 of your requirements and you just set DirectorySlash Off for the entire subdomain.

Related Topic