index.php仍然需要,即使在.htaccess之后

时间:2014-06-10 17:07:13

标签: php apache .htaccess url mod-rewrite

所以我在Digital Ocean上运行了一台服务器。我正在尝试运行Anchor CMS。这就是URL应该是http://colourity.com/posts/hello-world的样子。但这似乎不起作用。当我尝试http://colourity.com/index.php/posts/hello-world时,一切正常。但问题在于我正在使用.htaccess来纠正这个问题,这就是我所拥有的,

 Options -indexes

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

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

应该摆脱index.php,另外mod_rewrite已启用。我也重新启动了服务器,看看是否有所作为,但事实并非如此。有任何想法吗?

1 个答案:

答案 0 :(得分:1)

AllowOverride All必须包含在Apache配置中,以便.htaccess规则可以覆盖您的配置。来自文档:

  

当服务器找到.htaccess文件(由AccessFileName指定)时,它需要知道该文件中声明的哪些指令可以覆盖之前的配置指令。

     

当此指令设置为None时,则完全忽略.htaccess文件。在这种情况下,服务器甚至不会尝试读取文件系统中的.htaccess文件。

     

当此指令设置为All时,.htaccess文件中允许任何具有.htaccess Context的指令。

默认值为All,但某些模板配置文件可能会将其手动设置为None。另请注意,此语法仅适用于<Directory />部分。