Concrete5项目在除index.php之外的所有页面上抛出404

时间:2014-06-08 17:39:20

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

我刚刚将一个concrete5项目复制到我的本地框中,并试图让它在localhost上运行。我在开始时遇到了权限问题所以我只是运行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文件,所有这些都在现场服务器上完美运行。

有关如何解决这个问题的想法吗?

4 个答案:

答案 0 :(得分:1)

听起来好像您遇到了漂亮网址的问题。禁用它后仍然无法正常工作的可能是像块一样的缓存项。如果您清除缓存,您的网站可能会在没有启用漂亮网址的情况下运行。

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

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

答案 1 :(得分:1)

注意:您可以使用管理员登录中的脚本更新&#34;漂亮的网址&#34;。如果您在网站上将.htaccess用于其他目的,则需要注意的一点。

答案 2 :(得分:1)

尝试完全删除htaccess。而不是删除它,重命名它。然后直接进入/ index / dashboard /进入仪表板,禁用漂亮的URL,禁用和清除缓存,以及清除浏览器缓存。

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

一旦所有内容都工作没有漂亮的网址,您就可以开始重新启用了。

答案 3 :(得分:1)

在我的家用机器(linux / apache)上尝试使用concrete5时,我只是碰到了这个。

在我的情况下,问题似乎是因为我在文档根目录下安装了concrete2两个目录级别(/ var / www / html)。最初,我刚刚根据启用漂亮网址时给出的值创建了.htaccess文件,然后点击未找到的&#34;页面#34;问题(甚至无法登录。)最后,便士掉线了:我编辑了.htaccess并更改了RewriteRule以指向concrete5 index.php相对于/ var / www / html的实际位置。

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

RewriteRule。围栏/的public_html / index.php的

这似乎有用。

希望它有所帮助...