我刚刚完成入门教程(http://book.cakephp.org/2.0/en/getting-started.html)并将我的文件放在Apache服务器上,该服务器以Drupal projet作为根URL。
Cakephp的索引页面加载正常,但是当我点击任何项目时,将我的根URL更改为root/posts/view/2
,它会显示Drupal的页面未找到错误。
我想这可能是重写问题。我的CakePHP目录有一个.htaccess文件,其中包含:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
我的apache2站点启用的conf以:
结束Alias /test /var/www/cakephp/app/webroot
<Directory /var/www/cakephp/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
当我从:
更改索引操作路径时Router::connect('/', array('controller' => 'posts', 'action' => 'index'));
到:
Router::connect('/foo', array('controller' => 'posts', 'action' => 'index'));
我遇到了与上述相同的错误。
有任何线索吗?
答案 0 :(得分:1)
我认为问题来自Rewrite mod。删除3 .htaccess文件允许我访问应用程序URL。
顺便说一句,我尝试使用以下.htaccess文件的新干净Apache服务器并且它有效:
<强> /var/www/cakephp/.htaccess 强>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /cakephp/
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
<强> /var/www/cakephp/app/.htaccess 强>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /cakephp/app/
RewriteRule ^$ webroot/ [L]
RewriteRule (.*) webroot/$1 [L]
</IfModule>
<强> /var/www/cakephp/app/webroot/.htaccess 强>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /cakephp/app/webroot/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
</IfModule>