【问题标题】:Cakephp 2.x URL rewriting is not properly configured on your serverCakephp 2.x URL 重写在您的服务器上未正确配置
【发布时间】:2017-05-18 18:24:50
【问题描述】:

我认为不知何故,我们大多数人都在使用 .htaccess 时遇到了问题。我想知道是否有人可以帮助我。 开放使用 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>

【问题讨论】:

  • 您确定 .htaccess 文件存在吗?
  • 您好 M. CJThomson,是的,我通过 git 下载了它,所以两个文件 (.htaccess) 都在文件夹中(/app .htaccess 和 app/webroot .htaccess)我还没有修改它们。
  • htaccess 文件是什么样的?
  • 嗨!斤!我会在我的帖子中回答你。因为我的代码在这个小文本区域里很丑

标签: .htaccess cakephp mod-rewrite


【解决方案1】:

这是一个相当古老的问题,但也许这个答案与您的 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 被隐藏了!!!

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 我不讨厌蛋糕..但你的回答有助于解决问题......虽然我之前从未遇到过这个问题......
      • 你不应该讨厌 CakePHP。
      【解决方案4】:

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

      1. sudo a2enmod 重写
      2. sudo service apache2 重启
      3. sudo nano /etc/apache2/sites-available/000-default.conf
      4. 查找“DocumentRoot /var/www/html”并在下面直接添加以下行: 允许覆盖所有
      5. sudo service apache2 重启

      【讨论】:

        【解决方案5】:

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

        我有这个问题,复制 cakebook 的行来解决这个问题:

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

        【讨论】:

          【解决方案6】:

          根文件夹中还有一个.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有更多解释

          【讨论】:

            【解决方案7】:

            有两种解决方案:

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

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

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

            【讨论】:

              猜你喜欢
              • 2011-10-24
              • 2012-01-09
              • 1970-01-01
              • 2023-04-07
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2019-03-04
              相关资源
              最近更新 更多