从文档根外部加载CakePHP应用程序
问题描述:
我试图从另一个文档根加载CakePHP应用程序。从文档根外部加载CakePHP应用程序
这里是我的Apache配置:
<VirtualHost *:443>
ServerName internet.com
DocumentRoot "/sites/internet"
...
Alias /developer "/sites/intranet/developer"
</VirtualHost>
然而,当我访问internet.com/developer/cakeapp/portal
,我得到一个404。如果我访问intranet.com/developer/cakeapp/portal
,它的工作原理。
工作配置Intranet网站:
<VirtualHost *:443>
ServerName intranet.com
DocumentRoot "/sites/intranet"
...
<Directory "/sites/intranet/developer/cakeapp">
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /developer/cakeapp
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_METHOD} !OPTIONS
RewriteRule ^(.*)$ app/webroot/index.php?url=$2 [QSA,L]
</IfModule>
</Directory>
</VirtualHost>
我应该包括在互联网虚拟主机配置太mod_rewrites?我曾假设他们会在访问内部网站时进行翻译。
注意:此设置位于配置为模拟Intranet和Internet托管的开发服务器上。目标是在这两个域上重新使用门户网站。
更新#1
使用蛋糕2.4.5
更新#2
看着我的SSL错误日志文件,我注意到了这一点: File does not exist: /sites/intranet/developer/cakeapp/users
的应用程序重定向到users/login
,所以它似乎有些工作。仍然没有解释的404
更新#3
新重写规则正在使用:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /developer/cakeapp
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/(app/webroot/)?(img|css|js)/(.*)$
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
答
这里是工作的配置。我不得不从Intranet配置中复制一些配置元素,我认为这会在别名过程中应用。
<VirtualHost *:443>
ServerName internet.com
DocumentRoot "/sites/internet"
...
Alias /developer "/sites/intranet/developer"
<Directory "/sites/intranet/developer">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
RewriteEngine on
RewriteBase /developer/cakeapp
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/(app/webroot/)?(img|css|js)/(.*)$
RewriteRule ^(.*)$ index.php [QSA,L]
</Directory>
</VirtualHost>
你应该总是提到你正在使用的确切cakephp版本。 – mark
@mark更新,2.4.5 ... – TekiusFanatikus
此外,您的RewriteRule看起来很旧。请参阅cakephp回购代码,了解它在2.x中的外观。 – mark