在您的服务器上未正确配置Cakephp 2.x URL重写

时间:2013-10-16 22:41:46

标签: .htaccess cakephp mod-rewrite

我想我们大多数人都遇到了麻烦.htaccess我想知道是否有人可以帮助我。 Opensuse 12.3: 代码:

Linux linux-hyo0.site 3.7.10-1.16-desktop #1 SMP PREEMPT Fri May 31 20:21:23 UTC 2013 (97c14ba) x86_64 x86_64 x86_64 GNU/Linux

我喜欢在我的机器上安装Cakephp,但我的网页上有一个错误,说“ 码: 您的服务器上未正确配置网址重写。

我的/ etc / sysconfig / apache2文件如下: 代码:

APACHE_MODULES="authz_host actions alias auth_basic authz_groupfile authn_file authz_user autoindex cgi dir include log_config mime negotiation setenvif status userdir asis imagemap php5 reqtimeout authz_default rewrite"

和/etc/apache2/sysconfig.d/loadmodule.conf在最后这一行 代码:

LoadModule rewrite_module                 /usr/lib64/apache2/mod_rewrite.so

我也改变了我的文件etc / apache2 / defaul-server.conf

<Directory />
    Options FollowSymLinks
    AllowOverride All
</Directory>
<Directory "/srv/www/htdocs">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride ALL
    Order Allow,Deny
    Allow from all
</Directory>

任何帮助?

/ app / webroot

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

并在app /

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    ^$    webroot/    [L]
    RewriteRule    (.*) webroot/$1    [L]
</IfModule>

7 个答案:

答案 0 :(得分:6)

这是一个相当古老的问题但是这个答案可能与你的Google用户相关:

您是否更改了View / Layouts / default.ctp?

这是警告的结果:

  • 警告在View / Pages / home.ctp
  • 中的div中设置
  • 在home.ctp中仅在文件app / webroot / css / cake.generic.css存在时设置警告
  • 在标准的default.ctp布局中,加载样式表/css/cake.generic.css
  • 在cake.generic.css中,警告的div是...... hidden !!!

那么当默认主页加载时会发生什么:它尝试加载cake.generic.css样式表,当正确配置mod_rewrite时成功。那么警告就被隐藏了。如果无法加载样式表,警告将保持可见。

简而言之,当mod_rewrite和htaccess,出现问题或者您更改了布局以便不再加载cake.generic.css时,会弹出此警告 ... < / p>

首先检查您是否尝试加载样式表。它会出现在您的F12控制台中吗?

答案 1 :(得分:2)

在尝试追踪问题的几个小时后,我终于发现我的.htaccess文件从未存在过。我将以下代码复制到一个新的.htaccess文件中,然后将其复制。

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    ^$ app/webroot/    [L]
    RewriteRule    (.*) app/webroot/$1 [L]
</IfModule>

答案 2 :(得分:1)

首先我要说:我讨厌CAKEPHP !!!!
我只花了几个小时研究这个问题。 我通过检查app / webroot / css / cake.generic.css了解到蛋糕测试URL重写 确保存在。 在我检查了apache error_log并看到它抱怨无法找到http:/ myproject / css后,我的解决方案出现了。嗯,默认情况下没有css目录。我创建了一个链接(ln -s app / webroot / css),它解决了Cake的问题。

答案 3 :(得分:1)

如果在新安装Cakephp后出现此错误,并且您没有更改任何文件(css文件或cake.generic.css),请执行以下操作:

  1. sudo a2enmod rewrite
  2. sudo service apache2 restart
  3. sudo nano /etc/apache2/sites-available/000-default.conf
  4. 查找“DocumentRoot / var / www / html”并在下面直接添加以下行: AllowOverride All
  5. sudo service apache2 restart

答案 4 :(得分:0)

确保将所有AllowOverride None更改为AllowOverride All

我有这个问题并解决了这个复制蛋糕行的问题:

http://book.cakephp.org/2.0/en/installation/url-rewriting.html

答案 5 :(得分:0)

根文件夹中还有一个.htaccess文件,即/.htaccess。这可能没有被复制,因为它被大多数操作系统默认隐藏。

尝试将其添加为/.htaccess的内容,并将其检查到Web服务器。

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule ^$ app/webroot/    [L]
   RewriteRule (.*) app/webroot/$1 [L]
</IfModule>

http://book.cakephp.org/2.0/en/installation/url-rewriting.html

有更多解释

答案 6 :(得分:-1)

有两种解决方案:

1)将Apache配置文件中的DocumentRoot设置为 app / webroot / 目录,CakePHP将使用 .htaccess 文件。

2)在应用程序的根目录中放置一个 .htaccess 文件,因为默认情况下,如果您使用CakePHP控制台生成应用程序,我认为不会创建一个。 .htaccess 文件应该是这样的:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^$ app/webroot/     [L]
    RewriteRule (.*) app/webroot/$1 [L]
</IfModule>