Issue
On my CentOS LAMP. I have a website, www.mydomain.com. In my httpd.conf I have:
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/cakephp
ServerName www.mydomain.com
<Directory /var/www/cakephp/>
Options FollowSymLinks
AllowOverride All
</Directory>
</VirtualHost>
So www.mydomain.com is served from /var/www/cakephp.
But I want it so that URL "www.mydomain.com/powercontroller/" is served from: /var/www/powercontroller. So I put this alias into httpd.conf as well:
Alias /powercontroller/ "/var/www/powercontroller/"
<Directory "/var/www/powercontroller/">
AllowOverride All
</Directory>
But it doesn't work. The URL "www.mydomian.com/powercontroller" in my browser gives me error 404 "The requested URL /var/www/powercontroller/webroot/ was not found on this server."
My /var/www/powercontroller directory has the following:
.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ webroot/ [L]
RewriteRule (.*) webroot/$1 [L]
</IfModule>
index.php
require 'webroot' . DIRECTORY_SEPARATOR . 'index.php';
These are the default files from Cakephp 3.0 setup. And there is certainly a webroot directory with everything in place from the default Cakephp 3.0.
I know I must be partway there because at least it's looking in the powercontroller directory. But for some reason it insists it cannot find the webroot.
Solution
OK I figured it out. When you alias to a cakephp 3.0 app directory then your .htaccess in both your app directory and your webroot directory needs a RewriteBase directive. So in my case file /var/www/powercontroller/.htaccess and file /var/www/powercontroller/webroot/.htaccess both need the line:
RewriteBase /powercontroller/
right below their line
RewriteEngine on
This information is found almost nowhere. Here's a similar question that was never answered correctly, that I'll now answer. And here's an analogous answer about drupal that was the only clue I found in a week of searching.
Answered By - Joe C Answer Checked By - Senaida (WPSolving Volunteer)