我有一个破碎的Cake PHP网站,我没有写,但我负责修复。我有主控制器,但没有css / js / images,当我点击一个链接时,我找不到404。我相信mod_rewrite或apache中的docroot配置有些不对劲。
在阅读Cake文档时,我发现了这个:
“应用程序/根目录 在生产设置中,此文件夹应充当应用程序的文档根目录。这里的文件夹也可以作为CSS样式表,图像和JavaScript文件的保存位置。“
在我的/ etc / apache2 / sites-enabled / this-site中,我看到了:
DocumentRoot /u02/data/docroots/this_site
<Directory /u02/data/docroots/this_site>
Options -Indexes
AllowOverride none
Order deny,allow
Allow from all
</Directory>
所以,我的问题: 以上配置块是否需要: / u02 / data / docroots / this_site / app / webroot作为DocumentRoot和?
您可以考虑在其他地方寻找故障排除方法吗?
答案 0 :(得分:2)
由于您可以编辑apache配置文件,因此最适合进行标准的生产安装。
以上配置块是否需要:... / app / webroot作为DocumentRoot
假设路径存在:是的。
这将修复损坏的css / js / images。
将重写规则放在虚拟主机配置中:
DocumentRoot /u02/data/docroots/this_site/app/webroot
<Directory /u02/data/docroots/this_site/app/webroot>
Options -Indexes
AllowOverride none
Order deny,allow
Allow from all
// added
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</Directory>
然后,这将把任何非文件的请求路由到应用程序。
验证所使用的重写规则是否与正在使用的CakePHP版本兼容,以上是基于the latest release - it changed over the years的规则,并且使用错误的重写规则可能会产生意外的副作用。
AllowOverride none
这可以防止apache读取.htaccess
个文件。如果您要将其更改为AllowOverride all
,并假设当前忽略的.htaccess
文件存在,则该网站可以正常工作 - 但作为开发安装。
答案 1 :(得分:1)
试试这个:
<VirtualHost *:80>
ServerAdmin xxxxxx@test.ro
ServerName test.ro
ServerAlias www.test.ro
DirectoryIndex index.php
DocumentRoot /u02/data/docroots/this_site
ErrorLog /u02/data/docroots/this_site/error.log
CustomLog /u02/data/docroots/this_site/access.log combined
<Directory "/u02/data/docroots/this_site">
Options -Indexes FollowSymLinks MultiViews
AllowOverride AuthConfig FileInfo
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
你应该有3个.htaccess文件:
<强> /u02/data/docroots/this_site/app/webroot/.htaccess 强>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>
<强> /u02/data/docroots/this_site/app/.htaccess 强>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ webroot/ [L]
RewriteRule (.*) webroot/$1 [L]
</IfModule>
<强> /u02/data/docroots/this_site/.htaccess 强>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
希望这会有所帮助;)