3

我想不知何故,我们大多数人都在使用 .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,但我的网页上有一个错误提示“代码: 您的服务器上没有正确配置 URL 重写。

我的 /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>

有什么帮助吗?

在应用程序/webroot 上

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

在应用程序/

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

7 回答 7

6

这是一个相当古老的问题,但也许这个答案与您的谷歌用户相关:

您是否更改了 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 被隐藏了!!!

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

简而言之,当 mod_rewrite 和 htaccess 存在问题,或者您更改了布局以使 cake.generic.css 不再加载时,会弹出此警告...

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

于 2014-05-21T09:37:42.920 回答
2

经过数小时试图追查问题,我终于发现我的 .htaccess 文件从一开始就不存在。我将以下代码复制到一个新的 .htaccess 文件中,嘿嘿。

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    ^$ app/webroot/    [L]
    RewriteRule    (.*) app/webroot/$1 [L]
</IfModule>
于 2014-10-14T12:33:49.570 回答
1

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

  1. sudo a2enmod 重写
  2. sudo 服务 apache2 重启
  3. 须藤纳米/etc/apache2/sites-available/000-default.conf
  4. 查找“DocumentRoot /var/www/html”并在下面直接添加以下行:AllowOverride All
  5. sudo 服务 apache2 重启
于 2014-10-01T08:59:09.497 回答
1

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

于 2014-02-21T20:27:17.697 回答
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有更多解释

于 2013-11-23T12:42:40.320 回答
0

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

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

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

于 2013-10-17T13:15:23.747 回答
-1

有两种解决方案:

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

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

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^$ app/webroot/     [L]
    RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
于 2013-11-23T12:50:23.757 回答