1

我目前正在尝试在我的 Apache 服务器上安装Anchor CMS 。

我已成功将其部署到服务器。也就是说,当我访问 www.domain.com 时,我会看到默认主题的首页和一个测试帖子 :)

但是,如果我尝试单击帖子或转到管理区域,则会收到错误消息,例如:

未找到:在此服务器上未找到请求的 URL /posts/hello-world。

但是,如果我使用直接链接跟随(在这种情况下)发布链接,例如:

www.domain.com/index.php/posts/hello-world

它工作得很好。因此,重写似乎是一个问题。

我在 Stackoverflow 上发现了另一个与我的完全一样的问题,位于此处

不幸的是,我做了同样的步骤,但没有任何效果。回顾一下,这就是我的 VirtualHost 的外观:

<VirtualHost *:80>
    ServerName www.domain.com
    ServerAlias domain.com
    DocumentRoot /var/www/domain.com/public_html

    <Directory /var/www/domain.com/public_html>
        AllowOverride All
        Require all granted
    </Dictory>
</VirtualHost>

这就是我的 Anchor CMS config.app 文件的外观:

return array(
    'url' => '/',
    'index' => '',

    ...(rest of the data here)...

正如文档所述,在这种默认情况下使用空索引。

我的 .htaccess 目前看起来像这样:

Options -indexes

<IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteBase /

        # Allow any files or directories that exist to be displayed directly
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d

        # Rewrite all other URLs to index.php/URL
        RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
        ErrorDocument 404 index.php
</IfModule>

它位于文档根“public_html”中

可悲的是,即使配置了这些东西,我仍然会收到“未找到”错误。我真的不知道从这里去哪里:(

编辑

Options -indexes

<IfModule mod_rewrite.c>
        RewriteEngine On

        RewriteRule ^ http://google.com [R,L]

        RewriteBase /

        # Allow any files or directories that exist to be displayed directly
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d

        # Rewrite all other URLs to index.php/URL
        RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
        ErrorDocument 404 index.php
</IfModule>

我试图对 .htaccess 文件进行一般性重写,但它似乎没有被执行:

4

1 回答 1

2

似乎mod-rewrite没有被加载。

查看您的服务器配置文件 ( httpd.conf)。应该有如下声明:

LoadModule rewrite_module modules/mod_rewrite.so

如果该行以 开头#,则删除该#字符。您还可以使用以下命令:

a2enmod rewrite

另外,尝试将您Rewrite的 s移到IfModule块之外。

Options -indexes

RewriteEngine On

RewriteBase /

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule ^(.*)$ index.php/$1 [L]
于 2015-09-27T19:05:08.543 回答