【问题标题】:Concrete5 project throws 404 on all pages except index.phpConcrete5 项目在除 index.php 之外的所有页面上抛出 404
【发布时间】:2014-06-08 17:39:19
【问题描述】:

我刚刚将一个concrete5 项目复制到我的本地机器上,并试图让它在本地主机上运行。我一开始就有权限问题,所以我只运行了一个sudo chmod 777 -R site 来解决这个问题。然后我在点击链接时遇到了问题。除了index.php 之外的任何东西都会导致 404。所以我弄乱了 htaccess 文件。它以这种状态出现:

# Use PHP53 as default
AddHandler application/x-httpd-php53 .php
<IfModule mod_suphp.c>
    suPHP_ConfigPath /opt/php53/lib
</IfModule>

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

我把它改成了这样:

# Use PHP53 as default
AddHandler application/x-httpd-php53 .php
<IfModule mod_suphp.c>
    suPHP_ConfigPath /opt/php53/lib
</IfModule>

<Directory>
    AllowOverride All
</Directory>

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

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

现在,这些都没有帮助。我决定在数据库中禁用漂亮的 URL。我这样做了,大多数链接都有效。看起来有些仍然没有(可能是包中涉及的那些。我不知道,因为我正在拿起这个项目,有人离开它)。请记住,这一切都在我展示的第一个 .htaccess 文件的实时服务器上完美运行。

知道如何解决这个问题吗?

【问题讨论】:

  • 您是否复制了数据库并将config/site.php 更改为匹配?

标签: php .htaccess http-status-code-404 concrete5


【解决方案1】:

听起来您确实遇到了 Pretty URLs 的问题。禁用后仍然无法使用的可能是缓存项,例如块。如果您清除缓存,您的网站可能会在不启用漂亮 URL 的情况下运行。

至于 Pretty URLs 为什么不起作用,我首先要确保 mod_rewrite 已启用。然后你可以尝试其中的几个作为重写规则。

RewriteRule ^(.*)$ index.php [L]
RewriteRule .* index.php [L]

【讨论】:

    【解决方案2】:

    注意:您可以使用管理员登录中的脚本来更新“漂亮的 URL”。一个警告是,如果您在您的网站上将 .htaccess 用于其他目的。

    【讨论】:

      【解决方案3】:

      尝试完全删除 htaccess。与其删除它,不如重命名它。然后直接在 /index/dashboard/ 进入仪表板,禁用漂亮的 url,禁用和清除缓存,并清除浏览器缓存。

      (通常,在克隆站点之前,请始终禁用漂亮的 url,并禁用和清除缓存。)

      一旦没有漂亮的网址一切正常,您就可以开始重新启用。

      【讨论】:

        【解决方案4】:

        我刚刚在我的家用机器(linux/apache)上试用concrete5 时遇到了这个问题。

        就我而言,问题似乎是因为我在文档根目录 (/var/www/html) 下安装了 concrete5 两个目录级别。最初,我只是根据启用漂亮 url 时给出的值创建 .htaccess 文件,然后遇到“找不到页面”问题(甚至无法登录。)最终,一分钱掉了:我编辑了 .htaccess 并更改了RewriteRule 指向具体5 index.php 相对于/var/www/html 的实际位置。

        所以在我的例子中,concrete5 被安装到 /var/www/html/playpen/public_html - 所以新的 RewriteRule 读取:

        重写规则。 playpen/public_html/index.php

        这似乎有效。

        希望它可以帮助某人......

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-03-02
          • 2016-06-07
          • 2018-07-05
          • 2013-12-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多