Home > Software engineering >  How do I write a mod_rewrite so that it doesn't affect a subdomain that is in a subfolder
How do I write a mod_rewrite so that it doesn't affect a subdomain that is in a subfolder

Time:06-06

I have a site where the frontend is on the main domain and the backend is on a subdomain whose document root is a subfolder of the main domain's document root.

I have added this:

 <IfModule mod_negotiation.c>
   Options -MultiViews
 </IfModule>

 <IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteBase /
   RewriteRule ^index\.html$ - [L]
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule . /index.html [L]
 </IfModule>

to the .htaccess file for the main domain because it was giving a 404 error for refreshes and direct access. The problem is that adding that config results in a 500 error on my backend. How can I solve this?

CodePudding user response:

So it turns out I only needed to add one line to exclude the affected subdomain.

RewriteCond %{HTTP_HOST} !example\. [NC]

That did the trick.

CodePudding user response:

You shouldn't necessarily need to do anything with regards to the subdomain, depending on the type of requests you are making (which you've not stated).

However, you can disable mod_rewrite for the subdomain by creating an additional .htaccess file in the root of the subdomain (ie. in the subfolder off the main domain's document root) and place the following:

# /subfolder/.htaccess (subdomain)
RewriteEngine Off

.htaccess files are inherited along the filesystem path, so the .htaccess file in the root of the main domain will certainly be processed when accessing the subdomain, except that the conditions (RewriteCond directives) should already exclude any requests for actual files/directories.

  • Related