I'm missing something really simple... I have an MSM site that is subdomain.domain.com
. These really simple .htaccess rules work ... kind of.
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteRule (.*?)/index\.php/*(.*) /$1$2 [R=301,NE,L]
RewriteCond $1 !\.(gif|jpe?g|png|swf|pdf)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
The template routes work fine. For example, I have set a home template group at pages
with index
and non-index
named templates. If you visit subdomain.domain.com/pages/index
, it works just fine. Same with subdomain.domain.com/pages/non-index
.
Now, I've set the pages
template group to be the site home group, remember:
Make the index template in this group your site's home page? **Checked !!**
But when I visit subdomain.domain.com
, I get:
Error
The page you requested was not found.
Soooo... these routes all work:
https://subdomain.domain.com/index.php/ ->
loads pages/index
https://subdomain.domain.com/pages ->
loads pages/index
https://subdomain.domain.com/pages/non-index ->
loads pages/non-index
https://subdomain.domain.com/index.php/pages ->
loads pages/index
https://subdomain.domain.com/index.php/pages/non-index ->
loads pages/non-index
But yet the pages/index
doesn't render on the homepage. I get the EE page not found
error.
I've made sure my site_url
is set to https://subdomain.domain.com
, and that the name of my site index is blank.
I've tried a few variations on the last RewriteRule
line (adding the question mark), but those either render the same or result in the issue where only the homepage renders for URLS (so https://subdomain.domain.com
DOES load pages/index
, but so does https://subdomain.domain.com/pages/non-index
).
Like I said, I've tried a bunch of variations of rules to remove index.php and a variation of rules to route everything to index.php after removing it. Any one notice anything stupid I'm missing?
Edit Like I mentioned, modifying the last rewrite to something like:
RewriteRule ^(.*)$ /index.php?/$1 [L]
# or
RewriteRule ^(.*)$ /index.php?$1 [L]
# or (subdomain.domain.com is a folder in the web root)
RewriteRule ^(.*)$ /subdomain.domain.com/index.php?/$1 [L]
# or
RewriteRule ^(.*)$ /subdomain.domain.com/index.php?$1 [L]
# or any of those with the QSA flag
results in the issue where only the site index template renders.
Edit Last edit:
Here's how I load my subdomain folder from my main web root so this subdomain loads the MSM subdomain site. This is at the top of my web root .htaccess
file.
RewriteCond %{HTTP_HOST} ^subdomain.domain.com [NC]
RewriteCond %{REQUEST_FILENAME} !subdomain.domain.com/
RewriteRule ^(.*)$ /subdomain.domain.com/$1 [L]
That has worked fine in other sites I've worked on and looked at.