Currently I am using OSX Server (Yosemite) to host a bunch of PHP applications, some of which have a sub-directory under the websites document root for subdomains. Since updating to the Yosemite version of OSX Server, these subdomains have been throwing a 500 error with the error log referring to RewriteEngine not allowed here
.
Investigating, I have confirmed that both the parent and subdomain sites have AllowOverride All
configured, and .htaccess files are working on non-subdomain sites. Also, I have discovered that renaming or otherwise removing the .htaccess file from the parent directory causes the sub-domains to start working again.
/original_site_doc_root <- doc root for regular site
.htaccess
index.php
...
subdomain/ <- configured as a seperate site in osx server as a subdomain
.htaccess
index.php
...
Every bit of googling I do ends up referring to making sure mod_rewrite
is installed and AllowOverride
is configured properly.
My question is, how can I get Apache to stop throwing a 500 error on the sub-domain sites?
Edit
Here is the .htaccess file for the sub-domain that is causing me grief (with domains, directories and pages fuzzed to protect the innocent)
RewriteEngine On
Options +FollowSymlinks -Indexes
RewriteCond %{HTTP_HOST} ^www\.m\.somesite\.com$ [NC]
RewriteRule ^(.*)$ http://m.somesite.com/$1 [L,R=301]
RewriteBase /
# supress php errors
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_value docref_root 0
php_value docref_ext 0
# enable PHP error logging
php_flag log_errors on
php_value error_log /some/fuzzed/dir
RewriteRule ^$ /index.php [L]
RewriteRule ^home$ /home.php [L]
RewriteRule ^some-page1$ /some-page1.php [L]
RewriteRule ^some-page2$ /some-page2.php [L]
RewriteRule ^some-page3/(.*)$ /some-page32.php [L]
RewriteRule ^some-page3(\/?)$ /some-page32.php [L]
RewriteRule ^some-page4/(.*)$ /some-page4.php [L]
RewriteRule ^some-page4(\/?)$ /some-page4.php [L]
RewriteRule ^some-page5/(.*)$ /some-page5.php [L]
RewriteRule ^some-page5(\/?)$ /some-page5.php [L]
RewriteRule ^some-page6/(.*)$ /some-page6.php [L]
RewriteRule ^some-page6(\/?)$ /some-page6.php [L]
The .htaccess for the parent directory/non-sub-domain-site is more or less similar, with the only real difference of relevance being the top 2 lines:
RewriteEngine On
Options +FollowSymlinks -Indexes -Multiviews
RewriteOptions InheritXXXX
anywhere? The .htaccess file from the parent directory on the filesystem is inherited, although mod_rewrite is not normally.RewriteEngine on
andOptions +FollowSymlinks -Indexes
along with some pretty standard Rewrite rules and conditions.RewriteOptions InheritXXXX
is neither in any of the .htaccess files orhttpd_server_app.conf
.AllowOverride All
configured" - but where specifically are theAllowOverride All
directives set? IfAllowOverride All
is only set in the parent domain's VirtualHost then you will need to redeclare this in the subdomain's own (isolated) VirtualHost as well.